Polski OCR w C# i .NET

Inne wersje tego dokumentu:

IronOCR to komponent oprogramowania C# umożliwiający programistom .NET odczytywanie tekstu z obrazów i dokumentów PDF w 126 językach, w tym po polsku.

Jest to zaawansowany fork Tesseract, stworzony wyłącznie dla programistów .NET i regularnie przewyższa inne silniki Tesseract zarówno pod względem szybkości, jak i dokładności.

Zawartość IronOcr.Languages.Polish

Ten pakiet zawiera 43 języki OCR dla .NET:

  • Polskie
  • PolishBest
  • Szybko

Ściągnij

Pakiet języka polskiego [język polski]
* Download as Zamek błyskawiczny
* Install with
https://www.nuget.org/packages/IronOcr.Languages.Polish/'> NuGet

Instalacja

Pierwszą rzeczą, jaką musimy zrobić, jest zainstalowanie naszego polskiego pakietu OCR w Twoim projekcie .NET.

PM> Install-Package IronOCR.Languages.Polish

Przykład kodu

Ten przykład kodu C# odczytuje polski tekst z dokumentu Image lub PDF.

// Zainstaluj najpierw pakiet języka polskiego OCR
// PM> Install-Package IronOcr.Languages.Polish
using IronOcr;

// Tworzymy nową instancję IronTesseract
var Ocr = new IronTesseract();
// Ustawiamy odpowiedni język OCR na Polski
Ocr.Language = OcrLanguage.Polish;

// Tworzymy obiekt wejściowy z obrazem
using (var Input = new OcrInput(@"images\Polish.png"))
{
    // Czytamy tekst z obrazu
    var Result = Ocr.Read(Input);
    // Pobieramy czytany tekst
    var AllText = Result.Text;
    // Wyświetlamy tekst
    Console.WriteLine(AllText);
}
// Zainstaluj najpierw pakiet języka polskiego OCR
// PM> Install-Package IronOcr.Languages.Polish
using IronOcr;

// Tworzymy nową instancję IronTesseract
var Ocr = new IronTesseract();
// Ustawiamy odpowiedni język OCR na Polski
Ocr.Language = OcrLanguage.Polish;

// Tworzymy obiekt wejściowy z obrazem
using (var Input = new OcrInput(@"images\Polish.png"))
{
    // Czytamy tekst z obrazu
    var Result = Ocr.Read(Input);
    // Pobieramy czytany tekst
    var AllText = Result.Text;
    // Wyświetlamy tekst
    Console.WriteLine(AllText);
}
' Zainstaluj najpierw pakiet języka polskiego OCR
' PM> Install-Package IronOcr.Languages.Polish
Imports IronOcr

' Tworzymy nową instancję IronTesseract
Private Ocr = New IronTesseract()
' Ustawiamy odpowiedni język OCR na Polski
Ocr.Language = OcrLanguage.Polish

' Tworzymy obiekt wejściowy z obrazem
Using Input = New OcrInput("images\Polish.png")
	' Czytamy tekst z obrazu
	Dim Result = Ocr.Read(Input)
	' Pobieramy czytany tekst
	Dim AllText = Result.Text
	' Wyświetlamy tekst
	Console.WriteLine(AllText)
End Using
$vbLabelText   $csharpLabel

Dlaczego warto wybrać IronOCR?

IronOCR to łatwa w instalacji, kompletna i dobrze udokumentowana biblioteka oprogramowania .NET.

Wybierz IronOCR, aby osiągnąć 99,8% + dokładność OCR bez korzystania z zewnętrznych usług internetowych, bieżących opłat lub wysyłania poufnych dokumentów przez Internet.

Dlaczego programiści C# wybierają IronOCR zamiast Vanilla Tesseract:

  • Zainstaluj jako pojedynczą bibliotekę DLL lub NuGet
  • Zawiera silniki Tesseract 5, 4 i 3 po wyjęciu z pudełka.
  • Dokładność 99,8% znacznie przewyższa zwykły Tesseract.
  • Niesamowita prędkość i wielowątkowość
  • Kompatybilny z MVC, WebApp, Desktop, Console & Server Application
  • Brak kodu Exes lub C++ do pracy
  • Pełna obsługa PDF OCR
  • Aby wykonać OCR prawie każdy plik obrazu lub PDF
  • Pełna obsługa .NET Core, Standard i FrameWork
  • Wdrażaj w systemach Windows, Mac, Linux, Azure, Docker, Lambda, AWS
  • Czytaj kody kreskowe i kody QR
  • Eksportuj OCR jako XHTML
  • Eksportuj OCR do przeszukiwalnych dokumentów PDF
  • Obsługa wielowątkowości
  • 126 języków międzynarodowych zarządzanych za pomocą plików NuGet lub OcrData
  • Wyodrębnij obrazy, współrzędne, statystyki i czcionki. Nie tylko tekst.
  • Może być używany do redystrybucji Tesseract OCR w aplikacjach komercyjnych i zastrzeżonych.

Technologia IronOCR wyróżnia się podczas pracy z rzeczywistymi obrazami i niedoskonałymi dokumentami, takimi jak zdjęcia lub skany o niskiej rozdzielczości, które mogą zawierać szum cyfrowy lub niedoskonałości.

Inne bezpłatne biblioteki OCR dla platformy .NET, takie jak inne interfejsy API tesseract .net i usługi internetowe, nie działają tak dobrze w tych rzeczywistych przypadkach użycia.

OCR z Tesseract 5 - Rozpocznij kodowanie w C#

Poniższy przykład kodu pokazuje, jak łatwo jest odczytać tekst z obrazu przy użyciu języka C# lub VB .NET.

OneLiner

// Szybki sposób na odczytanie tekstu z obrazu
string Text = new IronTesseract().Read(@"img\Screenshot.png").Text;
// Wyświetlamy tekst
Console.WriteLine(Text);
// Szybki sposób na odczytanie tekstu z obrazu
string Text = new IronTesseract().Read(@"img\Screenshot.png").Text;
// Wyświetlamy tekst
Console.WriteLine(Text);
' Szybki sposób na odczytanie tekstu z obrazu
Dim Text As String = (New IronTesseract()).Read("img\Screenshot.png").Text
' Wyświetlamy tekst
Console.WriteLine(Text)
$vbLabelText   $csharpLabel

Konfigurowalny Hello World

// Zainstaluj najpierw pakiet języka polskiego OCR
// PM> Install-Package IronOcr.Languages.Polish
using IronOcr;

// Tworzymy nową instancję IronTesseract
var Ocr = new IronTesseract();
// Ustawiamy odpowiedni język OCR na Polski
Ocr.Language = OcrLanguage.Polish;

// Tworzymy nowy obiekt OcrInput
using (var Input = new OcrInput())
{
    // Dodajemy obraz do wejściowego obiektu
    Input.AddImage("images/sample.jpeg");
    //... można dodać dowolną liczbę zdjęć
    // Czytamy tekst z obrazu
    var Result = Ocr.Read(Input);
    // Wyświetlamy tekst
    Console.WriteLine(Result.Text);
}
// Zainstaluj najpierw pakiet języka polskiego OCR
// PM> Install-Package IronOcr.Languages.Polish
using IronOcr;

// Tworzymy nową instancję IronTesseract
var Ocr = new IronTesseract();
// Ustawiamy odpowiedni język OCR na Polski
Ocr.Language = OcrLanguage.Polish;

// Tworzymy nowy obiekt OcrInput
using (var Input = new OcrInput())
{
    // Dodajemy obraz do wejściowego obiektu
    Input.AddImage("images/sample.jpeg");
    //... można dodać dowolną liczbę zdjęć
    // Czytamy tekst z obrazu
    var Result = Ocr.Read(Input);
    // Wyświetlamy tekst
    Console.WriteLine(Result.Text);
}
' Zainstaluj najpierw pakiet języka polskiego OCR
' PM> Install-Package IronOcr.Languages.Polish
Imports IronOcr

' Tworzymy nową instancję IronTesseract
Private Ocr = New IronTesseract()
' Ustawiamy odpowiedni język OCR na Polski
Ocr.Language = OcrLanguage.Polish

' Tworzymy nowy obiekt OcrInput
Using Input = New OcrInput()
	' Dodajemy obraz do wejściowego obiektu
	Input.AddImage("images/sample.jpeg")
	'... można dodać dowolną liczbę zdjęć
	' Czytamy tekst z obrazu
	Dim Result = Ocr.Read(Input)
	' Wyświetlamy tekst
	Console.WriteLine(Result.Text)
End Using
$vbLabelText   $csharpLabel

C#PDF OCR

To samo podejście można podobnie zastosować do wyodrębnienia tekstu z dowolnego dokumentu PDF.

using IronOcr;

// Tworzymy nową instancję IronTesseract
var Ocr = new IronTesseract();
// Ustawiamy odpowiedni język OCR na Polski
Ocr.Language = OcrLanguage.Polish;

// Tworzymy nowy obiekt OcrInput
using (var input = new OcrInput())
{
    // Dodajemy PDF do obiektu wejściowego z opcjonalnym hasłem
    input.AddPdf("example.pdf", "password");
    // Możemy również wybrać określone numery stron PDF do OCR

    // Czytamy tekst z PDF
    var Result = Ocr.Read(input);

    // Wyświetlamy tekst
    Console.WriteLine(Result.Text);
    Console.WriteLine($"{Result.Pages.Count()} Pages");
    // 1 strona na każdą stronę pliku PDF
}
using IronOcr;

// Tworzymy nową instancję IronTesseract
var Ocr = new IronTesseract();
// Ustawiamy odpowiedni język OCR na Polski
Ocr.Language = OcrLanguage.Polish;

// Tworzymy nowy obiekt OcrInput
using (var input = new OcrInput())
{
    // Dodajemy PDF do obiektu wejściowego z opcjonalnym hasłem
    input.AddPdf("example.pdf", "password");
    // Możemy również wybrać określone numery stron PDF do OCR

    // Czytamy tekst z PDF
    var Result = Ocr.Read(input);

    // Wyświetlamy tekst
    Console.WriteLine(Result.Text);
    Console.WriteLine($"{Result.Pages.Count()} Pages");
    // 1 strona na każdą stronę pliku PDF
}
Imports IronOcr

' Tworzymy nową instancję IronTesseract
Private Ocr = New IronTesseract()
' Ustawiamy odpowiedni język OCR na Polski
Ocr.Language = OcrLanguage.Polish

' Tworzymy nowy obiekt OcrInput
Using input = New OcrInput()
	' Dodajemy PDF do obiektu wejściowego z opcjonalnym hasłem
	input.AddPdf("example.pdf", "password")
	' Możemy również wybrać określone numery stron PDF do OCR

	' Czytamy tekst z PDF
	Dim Result = Ocr.Read(input)

	' Wyświetlamy tekst
	Console.WriteLine(Result.Text)
	Console.WriteLine($"{Result.Pages.Count()} Pages")
	' 1 strona na każdą stronę pliku PDF
End Using
$vbLabelText   $csharpLabel

OCR dla wielostronicowych plików TIFF

OCR Odczytywanie formatu pliku TIFF, w tym dokumentów wielostronicowych. TIFF można również konwertować bezpośrednio do pliku PDF z przeszukiwalnym tekstem.

using IronOcr;

// Tworzymy nową instancję IronTesseract
var Ocr = new IronTesseract();
// Ustawiamy odpowiedni język OCR na Polski
Ocr.Language = OcrLanguage.Polish;

// Tworzymy nowy obiekt OcrInput
using (var Input = new OcrInput())
{
    // Dodajemy wielostronicowy plik TIFF
    Input.AddMultiFrameTiff("multi - frame.tiff");

    // Czytamy tekst z TIFF
    var Result = Ocr.Read(Input);

    // Wyświetlamy tekst
    Console.WriteLine(Result.Text);
}
using IronOcr;

// Tworzymy nową instancję IronTesseract
var Ocr = new IronTesseract();
// Ustawiamy odpowiedni język OCR na Polski
Ocr.Language = OcrLanguage.Polish;

// Tworzymy nowy obiekt OcrInput
using (var Input = new OcrInput())
{
    // Dodajemy wielostronicowy plik TIFF
    Input.AddMultiFrameTiff("multi - frame.tiff");

    // Czytamy tekst z TIFF
    var Result = Ocr.Read(Input);

    // Wyświetlamy tekst
    Console.WriteLine(Result.Text);
}
Imports IronOcr

' Tworzymy nową instancję IronTesseract
Private Ocr = New IronTesseract()
' Ustawiamy odpowiedni język OCR na Polski
Ocr.Language = OcrLanguage.Polish

' Tworzymy nowy obiekt OcrInput
Using Input = New OcrInput()
	' Dodajemy wielostronicowy plik TIFF
	Input.AddMultiFrameTiff("multi - frame.tiff")

	' Czytamy tekst z TIFF
	Dim Result = Ocr.Read(Input)

	' Wyświetlamy tekst
	Console.WriteLine(Result.Text)
End Using
$vbLabelText   $csharpLabel

Kody kreskowe i QR

Unikalną cechą IronOCR jest to, że może odczytywać kody kreskowe i kody QR z dokumentów podczas skanowania tekstu. Wystąpienia klasy OcrResult.OcrBarcode zapewniają deweloperowi szczegółowe informacje o każdym zeskanowanym OcrResult.OcrBarcode kreskowym.

using IronOcr;

// Tworzymy nową instancję IronTesseract
var Ocr = new IronTesseract();
// Konfigurujemy odczytywanie kodów kreskowych
Ocr.Configuration.ReadBarCodes = true;

// Tworzymy nowy obiekt OcrInput
using (var input = new OcrInput())
{
    // Dodajemy obraz z kodem kreskowym do obiektu wejściowego
    input.AddImage("img/Barcode.png");

    // Czytamy tekst z obrazu
    var Result = Ocr.Read(input);

    // Iterujemy przez znalezione kody kreskowe
    foreach (var Barcode in Result.Barcodes)
    {
        // Wyświetlamy wartość kodu kreskowego
        Console.WriteLine(Barcode.Value);
        // Właściwości typu i lokalizacji również zostały ujawnione
    }
}
using IronOcr;

// Tworzymy nową instancję IronTesseract
var Ocr = new IronTesseract();
// Konfigurujemy odczytywanie kodów kreskowych
Ocr.Configuration.ReadBarCodes = true;

// Tworzymy nowy obiekt OcrInput
using (var input = new OcrInput())
{
    // Dodajemy obraz z kodem kreskowym do obiektu wejściowego
    input.AddImage("img/Barcode.png");

    // Czytamy tekst z obrazu
    var Result = Ocr.Read(input);

    // Iterujemy przez znalezione kody kreskowe
    foreach (var Barcode in Result.Barcodes)
    {
        // Wyświetlamy wartość kodu kreskowego
        Console.WriteLine(Barcode.Value);
        // Właściwości typu i lokalizacji również zostały ujawnione
    }
}
Imports IronOcr

' Tworzymy nową instancję IronTesseract
Private Ocr = New IronTesseract()
' Konfigurujemy odczytywanie kodów kreskowych
Ocr.Configuration.ReadBarCodes = True

' Tworzymy nowy obiekt OcrInput
Using input = New OcrInput()
	' Dodajemy obraz z kodem kreskowym do obiektu wejściowego
	input.AddImage("img/Barcode.png")

	' Czytamy tekst z obrazu
	Dim Result = Ocr.Read(input)

	' Iterujemy przez znalezione kody kreskowe
	For Each Barcode In Result.Barcodes
		' Wyświetlamy wartość kodu kreskowego
		Console.WriteLine(Barcode.Value)
		' Właściwości typu i lokalizacji również zostały ujawnione
	Next Barcode
End Using
$vbLabelText   $csharpLabel

OCR w określonych obszarach obrazów

Wszystkie metody skanowania i czytania IronOCR zapewniają możliwość dokładnego określenia, z której części strony lub stron chcemy czytać tekst. Jest to bardzo przydatne, gdy patrzymy na standardowe formularze i może zaoszczędzić dużo czasu i poprawić wydajność.

Aby użyć obszarów upraw, będziemy musieli dodać odniesienie systemowe do System.Drawing, abyśmy mogli używać obiektu System.Drawing.Rectangle.

using IronOcr;
using System.Drawing; // Dodajemy odniesienie do System.Drawing

// Tworzymy nową instancję IronTesseract
var Ocr = new IronTesseract();
// Ustawiamy odpowiedni język OCR na Polski
Ocr.Language = OcrLanguage.Polish;

// Tworzymy nowy obiekt OcrInput
using (var Input = new OcrInput())
{
    // Definiujemy obszar, z którego chcemy czytać
    var ContentArea = new Rectangle { X = 215, Y = 1250, Height = 280, Width = 1335 };
    // Wymiary podano w pikselach

    // Dodajemy obraz z określonym obszarem
    Input.Add("document.png", ContentArea);

    // Czytamy tekst z obrazu
    var Result = Ocr.Read(Input);

    // Wyświetlamy tekst
    Console.WriteLine(Result.Text);
}
using IronOcr;
using System.Drawing; // Dodajemy odniesienie do System.Drawing

// Tworzymy nową instancję IronTesseract
var Ocr = new IronTesseract();
// Ustawiamy odpowiedni język OCR na Polski
Ocr.Language = OcrLanguage.Polish;

// Tworzymy nowy obiekt OcrInput
using (var Input = new OcrInput())
{
    // Definiujemy obszar, z którego chcemy czytać
    var ContentArea = new Rectangle { X = 215, Y = 1250, Height = 280, Width = 1335 };
    // Wymiary podano w pikselach

    // Dodajemy obraz z określonym obszarem
    Input.Add("document.png", ContentArea);

    // Czytamy tekst z obrazu
    var Result = Ocr.Read(Input);

    // Wyświetlamy tekst
    Console.WriteLine(Result.Text);
}
Imports IronOcr
Imports System.Drawing ' Dodajemy odniesienie do System.Drawing

' Tworzymy nową instancję IronTesseract
Private Ocr = New IronTesseract()
' Ustawiamy odpowiedni język OCR na Polski
Ocr.Language = OcrLanguage.Polish

' Tworzymy nowy obiekt OcrInput
Using Input = New OcrInput()
	' Definiujemy obszar, z którego chcemy czytać
	Dim ContentArea = New Rectangle With {
		.X = 215,
		.Y = 1250,
		.Height = 280,
		.Width = 1335
	}
	' Wymiary podano w pikselach

	' Dodajemy obraz z określonym obszarem
	Input.Add("document.png", ContentArea)

	' Czytamy tekst z obrazu
	Dim Result = Ocr.Read(Input)

	' Wyświetlamy tekst
	Console.WriteLine(Result.Text)
End Using
$vbLabelText   $csharpLabel

OCR dla skanów o niskiej jakości

Klasa IronOCR OcrInput może naprawić skany, których normalny Tesseract nie może odczytać.

using IronOcr;

// Tworzymy nową instancję IronTesseract
var Ocr = new IronTesseract();
// Ustawiamy odpowiedni język OCR na Polski
Ocr.Language = OcrLanguage.Polish;

// Tworzymy nowy obiekt OcrInput
using (var Input = new OcrInput(@"img\Potter.LowQuality.tiff"))
{
    // Naprawiamy szum cyfrowy i słabe skanowanie
    Input.DeNoise(); 
    // Naprawiamy obrót i perspektywę
    Input.Deskew();

    // Czytamy tekst z obrazu
    var Result = Ocr.Read(Input);

    // Wyświetlamy tekst
    Console.WriteLine(Result.Text);
}
using IronOcr;

// Tworzymy nową instancję IronTesseract
var Ocr = new IronTesseract();
// Ustawiamy odpowiedni język OCR na Polski
Ocr.Language = OcrLanguage.Polish;

// Tworzymy nowy obiekt OcrInput
using (var Input = new OcrInput(@"img\Potter.LowQuality.tiff"))
{
    // Naprawiamy szum cyfrowy i słabe skanowanie
    Input.DeNoise(); 
    // Naprawiamy obrót i perspektywę
    Input.Deskew();

    // Czytamy tekst z obrazu
    var Result = Ocr.Read(Input);

    // Wyświetlamy tekst
    Console.WriteLine(Result.Text);
}
Imports IronOcr

' Tworzymy nową instancję IronTesseract
Private Ocr = New IronTesseract()
' Ustawiamy odpowiedni język OCR na Polski
Ocr.Language = OcrLanguage.Polish

' Tworzymy nowy obiekt OcrInput
Using Input = New OcrInput("img\Potter.LowQuality.tiff")
	' Naprawiamy szum cyfrowy i słabe skanowanie
	Input.DeNoise()
	' Naprawiamy obrót i perspektywę
	Input.Deskew()

	' Czytamy tekst z obrazu
	Dim Result = Ocr.Read(Input)

	' Wyświetlamy tekst
	Console.WriteLine(Result.Text)
End Using
$vbLabelText   $csharpLabel

Eksportuj wyniki OCR jako przeszukiwalny plik PDF

Obraz do pliku PDF z możliwością kopiowania ciągów tekstowych. Może być indeksowany przez wyszukiwarki i bazy danych.

using IronOcr;

// Tworzymy nową instancję IronTesseract
var Ocr = new IronTesseract();
// Ustawiamy odpowiedni język OCR na Polski
Ocr.Language = OcrLanguage.Polish;

// Tworzymy nowy obiekt OcrInput
using (var Input = new OcrInput())
{
    // Nadajemy tytuł dokumentowi
    Input.Title = "Quarterly Report";
    // Dodajemy obrazy do wejścia
    Input.AddImage("image1.jpeg");
    Input.AddImage("image2.png");
    Input.AddImage("image3.gif");

    // Czytamy tekst z obrazów
    var Result = Ocr.Read(Input);

    // Zapisujemy wynik jako przeszukiwalny plik PDF
    Result.SaveAsSearchablePdf("searchable.pdf");
}
using IronOcr;

// Tworzymy nową instancję IronTesseract
var Ocr = new IronTesseract();
// Ustawiamy odpowiedni język OCR na Polski
Ocr.Language = OcrLanguage.Polish;

// Tworzymy nowy obiekt OcrInput
using (var Input = new OcrInput())
{
    // Nadajemy tytuł dokumentowi
    Input.Title = "Quarterly Report";
    // Dodajemy obrazy do wejścia
    Input.AddImage("image1.jpeg");
    Input.AddImage("image2.png");
    Input.AddImage("image3.gif");

    // Czytamy tekst z obrazów
    var Result = Ocr.Read(Input);

    // Zapisujemy wynik jako przeszukiwalny plik PDF
    Result.SaveAsSearchablePdf("searchable.pdf");
}
Imports IronOcr

' Tworzymy nową instancję IronTesseract
Private Ocr = New IronTesseract()
' Ustawiamy odpowiedni język OCR na Polski
Ocr.Language = OcrLanguage.Polish

' Tworzymy nowy obiekt OcrInput
Using Input = New OcrInput()
	' Nadajemy tytuł dokumentowi
	Input.Title = "Quarterly Report"
	' Dodajemy obrazy do wejścia
	Input.AddImage("image1.jpeg")
	Input.AddImage("image2.png")
	Input.AddImage("image3.gif")

	' Czytamy tekst z obrazów
	Dim Result = Ocr.Read(Input)

	' Zapisujemy wynik jako przeszukiwalny plik PDF
	Result.SaveAsSearchablePdf("searchable.pdf")
End Using
$vbLabelText   $csharpLabel

TIFF do konwersji PDF z możliwością wyszukiwania

Konwertuj dokument TIFF (lub dowolną grupę plików graficznych) bezpośrednio do przeszukiwalnego pliku PDF, który może być indeksowany przez intranet, witrynę internetową i wyszukiwarki Google.

using IronOcr;

// Tworzymy nową instancję IronTesseract
var Ocr = new IronTesseract();
// Ustawiamy odpowiedni język OCR na Polski
Ocr.Language = OcrLanguage.Polish;

// Tworzymy nowy obiekt OcrInput
using (var Input = new OcrInput())
{
    // Dodajemy wielostronicowy plik TIFF
    Input.AddMultiFrameTiff("example.tiff");

    // Czytamy tekst z TIFF i zapisujemy jako przeszukiwalny plik PDF
    var Result = Ocr.Read(Input).SaveAsSearchablePdf("searchable.pdf");
}
using IronOcr;

// Tworzymy nową instancję IronTesseract
var Ocr = new IronTesseract();
// Ustawiamy odpowiedni język OCR na Polski
Ocr.Language = OcrLanguage.Polish;

// Tworzymy nowy obiekt OcrInput
using (var Input = new OcrInput())
{
    // Dodajemy wielostronicowy plik TIFF
    Input.AddMultiFrameTiff("example.tiff");

    // Czytamy tekst z TIFF i zapisujemy jako przeszukiwalny plik PDF
    var Result = Ocr.Read(Input).SaveAsSearchablePdf("searchable.pdf");
}
Imports IronOcr

' Tworzymy nową instancję IronTesseract
Private Ocr = New IronTesseract()
' Ustawiamy odpowiedni język OCR na Polski
Ocr.Language = OcrLanguage.Polish

' Tworzymy nowy obiekt OcrInput
Using Input = New OcrInput()
	' Dodajemy wielostronicowy plik TIFF
	Input.AddMultiFrameTiff("example.tiff")

	' Czytamy tekst z TIFF i zapisujemy jako przeszukiwalny plik PDF
	Dim Result = Ocr.Read(Input).SaveAsSearchablePdf("searchable.pdf")
End Using
$vbLabelText   $csharpLabel

Eksportuj wyniki OCR jako HTML

Konwersja obrazu OCR do XHTML.

using IronOcr;

// Tworzymy nową instancję IronTesseract
var Ocr = new IronTesseract();
// Ustawiamy odpowiedni język OCR na Polski
Ocr.Language = OcrLanguage.Polish;

// Tworzymy nowy obiekt OcrInput
using (var Input = new OcrInput())
{
    // Nadajemy tytuł dokumentowi HTML
    Input.Title = "Html Title";
    // Dodajemy obraz do wejścia
    Input.AddImage("image1.jpeg");

    // Czytamy tekst z obrazu
    var Result = Ocr.Read(Input);

    // Zapisujemy wynik jako plik HTML
    Result.SaveAsHocrFile("results.html");
}
using IronOcr;

// Tworzymy nową instancję IronTesseract
var Ocr = new IronTesseract();
// Ustawiamy odpowiedni język OCR na Polski
Ocr.Language = OcrLanguage.Polish;

// Tworzymy nowy obiekt OcrInput
using (var Input = new OcrInput())
{
    // Nadajemy tytuł dokumentowi HTML
    Input.Title = "Html Title";
    // Dodajemy obraz do wejścia
    Input.AddImage("image1.jpeg");

    // Czytamy tekst z obrazu
    var Result = Ocr.Read(Input);

    // Zapisujemy wynik jako plik HTML
    Result.SaveAsHocrFile("results.html");
}
Imports IronOcr

' Tworzymy nową instancję IronTesseract
Private Ocr = New IronTesseract()
' Ustawiamy odpowiedni język OCR na Polski
Ocr.Language = OcrLanguage.Polish

' Tworzymy nowy obiekt OcrInput
Using Input = New OcrInput()
	' Nadajemy tytuł dokumentowi HTML
	Input.Title = "Html Title"
	' Dodajemy obraz do wejścia
	Input.AddImage("image1.jpeg")

	' Czytamy tekst z obrazu
	Dim Result = Ocr.Read(Input)

	' Zapisujemy wynik jako plik HTML
	Result.SaveAsHocrFile("results.html")
End Using
$vbLabelText   $csharpLabel

Filtry ulepszające obraz OCR

IronOCR zapewnia unikalne filtry dla obiektów OcrInput aby poprawić wydajność OCR.

Przykład kodu ulepszenia obrazu

Sprawia, że obrazy wejściowe OCR są wyższej jakości, aby uzyskiwać lepsze i szybsze wyniki OCR.

using IronOcr;

// Tworzymy nową instancję IronTesseract
var Ocr = new IronTesseract();
// Ustawiamy odpowiedni język OCR na Polski
Ocr.Language = OcrLanguage.Polish;

// Tworzymy nowy obiekt OcrInput
using (var Input = new OcrInput(@"LowQuality.jpeg"))
{
    // Naprawiamy szum cyfrowy i słabe skanowanie
    Input.DeNoise();
    // Naprawiamy obrót i perspektywę
    Input.Deskew();

    // Czytamy tekst z obrazu
    var Result = Ocr.Read(Input);

    // Wyświetlamy tekst
    Console.WriteLine(Result.Text);
}
using IronOcr;

// Tworzymy nową instancję IronTesseract
var Ocr = new IronTesseract();
// Ustawiamy odpowiedni język OCR na Polski
Ocr.Language = OcrLanguage.Polish;

// Tworzymy nowy obiekt OcrInput
using (var Input = new OcrInput(@"LowQuality.jpeg"))
{
    // Naprawiamy szum cyfrowy i słabe skanowanie
    Input.DeNoise();
    // Naprawiamy obrót i perspektywę
    Input.Deskew();

    // Czytamy tekst z obrazu
    var Result = Ocr.Read(Input);

    // Wyświetlamy tekst
    Console.WriteLine(Result.Text);
}
Imports IronOcr

' Tworzymy nową instancję IronTesseract
Private Ocr = New IronTesseract()
' Ustawiamy odpowiedni język OCR na Polski
Ocr.Language = OcrLanguage.Polish

' Tworzymy nowy obiekt OcrInput
Using Input = New OcrInput("LowQuality.jpeg")
	' Naprawiamy szum cyfrowy i słabe skanowanie
	Input.DeNoise()
	' Naprawiamy obrót i perspektywę
	Input.Deskew()

	' Czytamy tekst z obrazu
	Dim Result = Ocr.Read(Input)

	' Wyświetlamy tekst
	Console.WriteLine(Result.Text)
End Using
$vbLabelText   $csharpLabel

Lista filtrów obrazu OCR

Filtry wejściowe zwiększające wydajność OCR, które są wbudowane w IronOCR, obejmują:

  • OcrInput.Rotate (podwójne stopnie) - obraca obrazy o określoną liczbę stopni w prawo. W przypadku ruchu w kierunku przeciwnym do ruchu wskazówek zegara użyj liczb ujemnych.
  • OcrInput.Binarize () - ten filtr obrazu zamienia każdy piksel na czarny lub biały bez środka. Może poprawić wydajność OCR w przypadkach bardzo niskiego kontrastu tekstu z tłem.
  • OcrInput.ToGrayScale () - ten filtr obrazu zamienia każdy piksel w cień skali szarości. Jest mało prawdopodobne, aby poprawić dokładność OCR, ale może poprawić szybkość
  • OcrInput.Contrast () - automatycznie zwiększa kontrast. Ten filtr często poprawia szybkość i dokładność OCR w skanach o niskim kontraście.
  • OcrInput.DeNoise () - usuwa szum cyfrowy. Tego filtra należy używać tylko wtedy, gdy spodziewany jest szum.
  • OcrInput.Invert () - Odwraca każdy kolor. Np. Biały staje się czarny: czarny staje się biały.
  • OcrInput.Dilate () - zaawansowana morfologia. Dylatacja dodaje piksele do granic obiektów na obrazie. Naprzeciwko Erode
  • OcrInput.Erode () - zaawansowana morfologia. Erozja usuwa piksele na granicach obiektu naprzeciwko Dilate
  • OcrInput.Deskew () - obraca obraz tak, aby znajdował się we właściwej pozycji w górę i ortogonalnie. Jest to bardzo przydatne w przypadku OCR, ponieważ tolerancja Tesseract dla przekrzywionych skanów może wynosić zaledwie 5 stopni.
  • OcrInput.DeepCleanBackgroundNoise () - intensywne usuwanie szumów tła. Używaj tego filtra tylko w przypadku, gdy znane są ekstremalne szumy tła dokumentu, ponieważ ten filtr może również zmniejszyć dokładność OCR czystych dokumentów i jest bardzo kosztowny dla procesora.
  • OcrInput.EnhanceResolution - poprawia rozdzielczość obrazów o niskiej jakości. Ten filtr nie jest często potrzebny, ponieważ OcrInput.MinimumDPI i OcrInput.TargetDPI automatycznie wychwytują i rozwiązują dane wejściowe o niskiej rozdzielczości.

CleanBackgroundNoise. Jest to ustawienie, które jest nieco czasochłonne; jednakże pozwala bibliotece na automatyczne usuwanie szumów cyfrowych, zgnieceń papieru i innych niedoskonałości w obrazie cyfrowym, które w przeciwnym razie uniemożliwiłyby odczytanie go przez inne biblioteki OCR.

EnhanceContrast to ustawienie, które powoduje, że IronOCR automatycznie zwiększa kontrast tekstu na tle obrazu, zwiększając dokładność OCR i ogólnie zwiększając wydajność i szybkość OCR.

EnhanceResolution to ustawienie, które automatycznie wykrywa obrazy o niskiej rozdzielczości (poniżej 275 dpi) i automatycznie przeskalowuje obraz, a następnie wyostrza cały tekst, aby mógł być doskonale odczytany przez bibliotekę OCR. Chociaż ta operacja jest sama w sobie czasochłonna, zazwyczaj skraca całkowity czas operacji OCR na obrazie.

Language IronOCR obsługuje 22 międzynarodowe pakiety językowe, a ustawienie języka można wykorzystać do wybrania jednego lub więcej języków, które mają być zastosowane do operacji OCR.

Strategy IronOCR obsługuje dwie strategie. Możemy zdecydować się na szybkie i mniej dokładne skanowanie dokumentu lub zastosować zaawansowaną strategię, która wykorzystuje niektóre modele sztucznej inteligencji, aby automatycznie poprawić dokładność tekstu OCR, patrząc na statystyczne relacje między słowami w zdaniu.

ColorSpace to ustawienie, dzięki któremu możemy wybrać OCR w skali szarości lub w kolorze. Ogólnie rzecz biorąc, skala szarości jest najlepszą opcją. Jednak czasami, gdy istnieją teksty lub tła o podobnym odcieniu, ale bardzo różnym kolorze, pełnokolorowa przestrzeń kolorów zapewni lepsze wyniki.

DetectWhiteTextOnDarkBackgrounds. Ogólnie rzecz biorąc, wszystkie biblioteki OCR spodziewają się zobaczyć czarny tekst na białym tle. To ustawienie umożliwia IronOCR automatyczne wykrywanie negatywów lub ciemnych stron z białym tekstem i ich odczytywanie.

InputImageType. To ustawienie umożliwia deweloperowi wskazanie biblioteki OCR, czy przegląda cały dokument, czy fragment, taki jak zrzut ekranu.

RotateAndStraighten to zaawansowane ustawienie, które pozwala IronOCR na unikalną możliwość czytania dokumentów, które są nie tylko obrócone, ale mogą zawierać perspektywę, na przykład zdjęcia dokumentów tekstowych.

ReadBarcodes to przydatna funkcja, która umożliwia IronOCR automatyczne odczytywanie kodów kreskowych i kodów QR na stronach, ponieważ odczytuje również tekst, bez dodawania dużego dodatkowego obciążenia czasowego.

Głębia koloru. To ustawienie określa, ile bitów na piksel użyje biblioteka OCR do określenia głębi koloru. Większa głębia kolorów może poprawić jakość OCR, ale także wydłuży czas wymagany do zakończenia operacji OCR.

126 pakietów językowych

IronOCR obsługuje 126 języków międzynarodowych za pośrednictwem pakietów językowych, które są dystrybuowane jako biblioteki DLL, które można pobrać z tej witryny internetowej lub z Menedżera pakietów NuGet.

Języki obejmują niemiecki, francuski, angielski, chiński, japoński i wiele innych. Istnieją specjalistyczne pakiety językowe dla paszportów MRZ, kontroli MICR, danych finansowych, tablic rejestracyjnych i wielu innych. Możesz także użyć dowolnego pliku tesseract „.traineddata” - w tym utworzonego samodzielnie.

Przykład języka

Korzystanie z innych języków OCR.

// Zainstaluj najpierw odpowiedni pakiet językowy
// PM> Install IronOcr.Languages.Arabic
using IronOcr;

// Tworzymy nową instancję IronTesseract
var Ocr = new IronTesseract();
// Ustawiamy odpowiedni język OCR na Arabski
Ocr.Language = OcrLanguage.Arabic;

// Tworzymy nowy obiekt OcrInput
using (var input = new OcrInput())
{
    // Dodajemy obraz z tekstem arabskim
    input.AddImage("img/arabic.gif");
    // W razie potrzeby dodaj filtry obrazu
    // W tym przypadku nawet słabe wejście jest odczytywane

    // Czytamy tekst z obrazu
    var Result = Ocr.Read(input);

    // Konsola nie może łatwo drukować arabskiego w systemie Windows
    // Zamiast tego zapiszmy na dysku
    Result.SaveAsTextFile("arabic.txt");
}
// Zainstaluj najpierw odpowiedni pakiet językowy
// PM> Install IronOcr.Languages.Arabic
using IronOcr;

// Tworzymy nową instancję IronTesseract
var Ocr = new IronTesseract();
// Ustawiamy odpowiedni język OCR na Arabski
Ocr.Language = OcrLanguage.Arabic;

// Tworzymy nowy obiekt OcrInput
using (var input = new OcrInput())
{
    // Dodajemy obraz z tekstem arabskim
    input.AddImage("img/arabic.gif");
    // W razie potrzeby dodaj filtry obrazu
    // W tym przypadku nawet słabe wejście jest odczytywane

    // Czytamy tekst z obrazu
    var Result = Ocr.Read(input);

    // Konsola nie może łatwo drukować arabskiego w systemie Windows
    // Zamiast tego zapiszmy na dysku
    Result.SaveAsTextFile("arabic.txt");
}
' Zainstaluj najpierw odpowiedni pakiet językowy
' PM> Install IronOcr.Languages.Arabic
Imports IronOcr

' Tworzymy nową instancję IronTesseract
Private Ocr = New IronTesseract()
' Ustawiamy odpowiedni język OCR na Arabski
Ocr.Language = OcrLanguage.Arabic

' Tworzymy nowy obiekt OcrInput
Using input = New OcrInput()
	' Dodajemy obraz z tekstem arabskim
	input.AddImage("img/arabic.gif")
	' W razie potrzeby dodaj filtry obrazu
	' W tym przypadku nawet słabe wejście jest odczytywane

	' Czytamy tekst z obrazu
	Dim Result = Ocr.Read(input)

	' Konsola nie może łatwo drukować arabskiego w systemie Windows
	' Zamiast tego zapiszmy na dysku
	Result.SaveAsTextFile("arabic.txt")
End Using
$vbLabelText   $csharpLabel

Przykład wielu języków

Możliwe jest również OCR przy użyciu wielu języków w tym samym czasie. Może to naprawdę pomóc w uzyskaniu metadanych i adresów URL w języku angielskim w dokumentach Unicode.

// using IronOcr;
// PM> Install IronOcr.Languages.ChineseSimplified

var Ocr = new IronTesseract();
// Ustawiamy język podstawowy na chiński uproszczony
Ocr.Language = OcrLanguage.ChineseSimplified;
// Dodajemy język polski jako język dodatkowy
Ocr.AddSecondaryLanguage(OcrLanguage.Polish);

// Możemy dodać dowolną liczbę języków

using (var input = new OcrInput())
{
    // Dodajemy dokument wielojęzykowy
    input.Add("multi - language.pdf");

    // Czytamy dokument
    var Result = Ocr.Read(input);

    // Zapisujemy wynik do pliku tekstowego
    Result.SaveAsTextFile("results.txt");
}
// using IronOcr;
// PM> Install IronOcr.Languages.ChineseSimplified

var Ocr = new IronTesseract();
// Ustawiamy język podstawowy na chiński uproszczony
Ocr.Language = OcrLanguage.ChineseSimplified;
// Dodajemy język polski jako język dodatkowy
Ocr.AddSecondaryLanguage(OcrLanguage.Polish);

// Możemy dodać dowolną liczbę języków

using (var input = new OcrInput())
{
    // Dodajemy dokument wielojęzykowy
    input.Add("multi - language.pdf");

    // Czytamy dokument
    var Result = Ocr.Read(input);

    // Zapisujemy wynik do pliku tekstowego
    Result.SaveAsTextFile("results.txt");
}
' using IronOcr;
' PM> Install IronOcr.Languages.ChineseSimplified

Dim Ocr = New IronTesseract()
' Ustawiamy język podstawowy na chiński uproszczony
Ocr.Language = OcrLanguage.ChineseSimplified
' Dodajemy język polski jako język dodatkowy
Ocr.AddSecondaryLanguage(OcrLanguage.Polish)

' Możemy dodać dowolną liczbę języków

Using input = New OcrInput()
	' Dodajemy dokument wielojęzykowy
	input.Add("multi - language.pdf")

	' Czytamy dokument
	Dim Result = Ocr.Read(input)

	' Zapisujemy wynik do pliku tekstowego
	Result.SaveAsTextFile("results.txt")
End Using
$vbLabelText   $csharpLabel

Szczegółowe obiekty wyników OCR

IronOCR zwraca obiekt wynikowy OCR dla każdej operacji OCR. Ogólnie rzecz biorąc, programiści używają właściwości text tego obiektu tylko do skanowania tekstu z obrazu. Jednak DOM wyników OCR jest znacznie bardziej zaawansowany.

using IronOcr;
using System.Drawing; // Dodaj odniesienie do biblioteki

// Tworzymy nową instancję IronTesseract
var Ocr = new IronTesseract();
// Ustawiamy odpowiedni język OCR na Polski
Ocr.Language = OcrLanguage.Polish;
// Konfigurujemy dodatkowe ustawienia OCR
Ocr.Configuration.EngineMode = TesseractEngineMode.TesseractAndLstm;
Ocr.Configuration.ReadBarCodes = true; // Ważne przy odczycie kodów kreskowych

// Tworzymy nowy obiekt OcrInput
using (var Input = new OcrInput(@"images\sample.tiff"))
{
    // Odpalamy czytanie OCR
    OcrResult Result = Ocr.Read(Input);

    // Przykładowe użycie wyników OCR
    var Pages = Result.Pages;
    var Words = Pages[0].Words;
    var Barcodes = Result.Barcodes;

    // Przeglądaj tutaj, aby znaleźć ogromne, szczegółowe API:
    // - Strony, bloki, paragrafy, wiersze, słowa, znaki
    // - Eksport obrazu, współrzędne czcionek, dane statystyczne
}
using IronOcr;
using System.Drawing; // Dodaj odniesienie do biblioteki

// Tworzymy nową instancję IronTesseract
var Ocr = new IronTesseract();
// Ustawiamy odpowiedni język OCR na Polski
Ocr.Language = OcrLanguage.Polish;
// Konfigurujemy dodatkowe ustawienia OCR
Ocr.Configuration.EngineMode = TesseractEngineMode.TesseractAndLstm;
Ocr.Configuration.ReadBarCodes = true; // Ważne przy odczycie kodów kreskowych

// Tworzymy nowy obiekt OcrInput
using (var Input = new OcrInput(@"images\sample.tiff"))
{
    // Odpalamy czytanie OCR
    OcrResult Result = Ocr.Read(Input);

    // Przykładowe użycie wyników OCR
    var Pages = Result.Pages;
    var Words = Pages[0].Words;
    var Barcodes = Result.Barcodes;

    // Przeglądaj tutaj, aby znaleźć ogromne, szczegółowe API:
    // - Strony, bloki, paragrafy, wiersze, słowa, znaki
    // - Eksport obrazu, współrzędne czcionek, dane statystyczne
}
Imports IronOcr
Imports System.Drawing ' Dodaj odniesienie do biblioteki

' Tworzymy nową instancję IronTesseract
Private Ocr = New IronTesseract()
' Ustawiamy odpowiedni język OCR na Polski
Ocr.Language = OcrLanguage.Polish
' Konfigurujemy dodatkowe ustawienia OCR
Ocr.Configuration.EngineMode = TesseractEngineMode.TesseractAndLstm
Ocr.Configuration.ReadBarCodes = True ' Ważne przy odczycie kodów kreskowych

' Tworzymy nowy obiekt OcrInput
Using Input = New OcrInput("images\sample.tiff")
	' Odpalamy czytanie OCR
	Dim Result As OcrResult = Ocr.Read(Input)

	' Przykładowe użycie wyników OCR
	Dim Pages = Result.Pages
	Dim Words = Pages(0).Words
	Dim Barcodes = Result.Barcodes

	' Przeglądaj tutaj, aby znaleźć ogromne, szczegółowe API:
	' - Strony, bloki, paragrafy, wiersze, słowa, znaki
	' - Eksport obrazu, współrzędne czcionek, dane statystyczne
End Using
$vbLabelText   $csharpLabel

Wydajność

IronOCR działa od razu po wyjęciu z pudełka, bez konieczności dostrajania wydajności lub znacznej modyfikacji obrazów wejściowych.

Szybkość jest niesamowita: IronOcr.2020 + jest do 10 razy szybszy i generuje ponad 250% mniej błędów niż poprzednie wersje.

Ucz się więcej

Aby dowiedzieć się więcej o OCR w C#, VB, F# lub jakimkolwiek innym języku .NET, przeczytaj nasze samouczki społeczności, które zawierają rzeczywiste przykłady tego, jak można wykorzystać IronOCR i mogą pokazać niuanse, jak najlepiej wykorzystać tę bibliotekę.

Dostępne jest również pełne odniesienie do obiektów dla programistów .NET .