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
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)
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
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
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
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
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
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
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
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
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
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
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
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
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
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 .