# Get Started with OCR in C# and VB.NET
IronOCR to biblioteka oprogramowania w języku C#, umożliwiająca programistom platformy .NET rozpoznawanie i odczytywanie tekstu z obrazów oraz dokumentów PDF. Jest to biblioteka OCR oparta wyłącznie na platformie .NET, wykorzystująca najbardziej zaawansowany silnik Tesseract znany na rynku.
## Instalacja
### Zainstaluj za pomocą menedżera pakietów NuGet
Zainstaluj IronOCR w Visual Studio lub z wiersza poleceń za pomocą menedżera pakietów NuGet. W programie Visual Studio przejdź do konsoli za pomocą:
- Narzędzia ->
- Menedżer pakietów NuGet ->
- Konsola menedżera pakietów
```shell
:ProductInstall
```
Więcej informacji na temat aktualizacji wersji i instalacji można znaleźć w sekcji [IronOCR na NuGet](https://www.nuget.org/packages/IronOcr).
Dostępne są również inne **pakiety IronOCR NuGet** dla różnych platform:
- Windows: [https://www.nuget.org/packages/ironocr](https://www.nuget.org/packages/ironocr)
- Linux: [https://www.nuget.org/packages/ironocr.linux](https://www.nuget.org/packages/ironocr.linux)
- macOS: [https://www.nuget.org/packages/ironocr.macos](https://www.nuget.org/packages/ironocr.macos)
- macOS (ARM): [https://www.nuget.org/packages/ironocr.macos.arm](https://www.nuget.org/packages/ironocr.macos.arm)
### IronOcr.Extensions.AdvancedScan dla systemów Linux i macOS
Ten pakiet jest przeznaczony dla użytkowników korzystających z systemów Linux i Mac, którzy chcą również korzystać z zaawansowanych funkcji IronOCR.
- Linux: https://www.nuget.org/packages/IronOcr.Extensions.AdvancedScan.Linux
- macOS: https://www.nuget.org/packages/IronOcr.Extensions.AdvancedScan.macOS
#### Rozwiązywanie problemów
Wraz z nową aktualizacją tego pakietu, IronOCR łączy zależności OpenCV w ramach pakietu, aby go usprawnić, tak więc jeśli programiści importujący obecnie zależności OpenCV otrzymają następujący błąd.
```txt
The type of namespace name `OpenCvSharp` could not be found(are you missing a using directive or an assembly reference)
```
Możesz spokojnie usunąć przestrzenie nazw OpenCV, a problem zostanie rozwiązany.
### Pobierz plik .ZIP IronOCR
Możesz również pobrać IronOCR w pliku .ZIP. Kliknij, aby [bezpośrednio pobrać plik DLL](/csharp/ocr/packages/IronOcr.zip). Po pobraniu pliku ZIP:
#### Instrukcje dotyczące instalacji .NET Framework 4.0+:
- Dodaj plik IronOcr.dll z folderu net40 do swojego projektu
- Następnie dodaj odwołania do bibliotek Assembly do:
- System.Configuration
- System.Drawing
- System.Web
#### Instrukcje dotyczące .NET Standard, .NET Core 2.0+ i .NET 5
- Dodaj plik IronOcr.dll z folderu netstandard2.0 do swojego projektu
- Następnie dodaj odwołanie do pakietu NuGet do:
- System.Drawing.Common 4.7 lub nowszy
### Pobierz instalator IronOCR (tylko dla systemu Windows)
Inną opcją jest pobranie naszego instalatora IronOCR, który zainstaluje wszystkie zasoby niezbędne do natychmiastowego działania IronOCR. Należy pamiętać, że ta opcja jest dostępna wyłącznie dla systemów Windows. Aby pobrać instalator, [kliknij tutaj](/csharp/ocr/packages/IronOcrInstaller.zip). Po pobraniu pliku ZIP:
#### Instrukcje dotyczące instalacji .NET Framework 4.0+:
- Dodaj plik IronOcr.dll z folderu net40 do swojego projektu
- Następnie dodaj odwołania do bibliotek Assembly do:
- System.Configuration
- System.Drawing
- System.Web
#### Instrukcje dotyczące .NET Standard, .NET Core 2.0+ i .NET 5
- Dodaj plik IronOcr.dll z folderu netstandard2.0 do swojego projektu
- Następnie dodaj odwołanie do pakietu NuGet do:
- System.Drawing.Common 4.7 lub nowszy
## Dlaczego warto wybrać IronOCR?
IronOCR to łatwa w instalacji, kompletna i dobrze udokumentowana biblioteka oprogramowania .NET.
Wybierz IronOCR, aby osiągnąć **dokładność OCR na poziomie 99,8%** bez korzystania z zewnętrznych usług internetowych, ponoszenia stałych opłat lub przesyłania poufnych dokumentów przez Internet.
### Dlaczego programiści C# wybierają IronOCR zamiast Vanilla Tesseract:
- Zainstaluj jako pojedynczy plik DLL lub NuGet
- Zawiera gotowe do użycia silniki Tesseract 5, 4 i 3.
- Dokładność **na poziomie 99,8%** znacznie przewyższa wyniki standardowego Tesseracta.
- Ogromna szybkość i wielowątkowość
- Kompatybilność z aplikacjami MVC, WebApp, Desktop, Console i Server
- Nie ma plików Exe ani kodu C++ do pracy
- Pełna obsługa OCR plików PDF
- Przeprowadź OCR na niemal każdym pliku graficznym lub PDF
- Pełna obsługa .NET Core, .NET Standard i Framework
- Wdrażaj na Windows, Mac, Linux, Azure, Docker, Lambda, AWS
- Odczytuj kody kreskowe i kody QR
- Eksportuj wyniki OCR jako XHTML
- Eksportuj OCR do dokumentów PDF z możliwością wyszukiwania
- Obsługa wielowątkowości
- 125 języków międzynarodowych, zarządzanych za pośrednictwem plików NuGet lub OcrData
- Pobieraj obrazy, współrzędne, statystyki i czcionki. Nie tylko tekst.
- Może być wykorzystywane do redystrybucji OCR Tesseract w ramach komercyjnych i zastrzeżonych aplikacji.
_IronOCR sprawdza się doskonale podczas pracy z rzeczywistymi obrazami i niedoskonałymi dokumentami, takimi jak zdjęcia lub skany o niskiej rozdzielczości, które mogą zawierać szumy cyfrowe lub niedoskonałości._
Inne [bezpłatne](/csharp/ocr/use-case/free-ocr-csharp/) biblioteki [OCR](/csharp/ocr/use-case/free-ocr-csharp/) dla platformy .NET, takie jak inne interfejsy API .NET Tesseract i usługi internetowe, nie sprawdzają się tak dobrze w tych rzeczywistych przypadkach użycia.
## OCR with Tesseract 5 - Start Coding in C#
Poniższy przykład kodu pokazuje, jak łatwo odczytać tekst z obrazu przy użyciu języka C# lub VB .NET.
### OneLiner
```csharp
:path=/static-assets/ocr/content-code-examples/get-started/get-started-1.cs
```
### Konfigurowalny Hello World
```csharp
:path=/static-assets/ocr/content-code-examples/get-started/get-started-2.cs
```
### C# PDF OCR
To samo podejście można wykorzystać do wyodrębniania tekstu z dowolnego dokumentu PDF.
```csharp
:path=/static-assets/ocr/content-code-examples/get-started/get-started-3.cs
```
### OCR dla wielostronicowych plików TIFF
```csharp
:path=/static-assets/ocr/content-code-examples/get-started/get-started-4.cs
```
### BarCode i QR
Unikalną cechą IronOCR jest możliwość odczytywania kodów kreskowych i kodów QR z dokumentów podczas skanowania tekstu. Instancje klasy `OcrResult.OcrBarcode` dostarczają programistom szczegółowych informacji o każdym zeskanowanym BARCODE-ie.
```csharp
:path=/static-assets/ocr/content-code-examples/get-started/get-started-5.cs
```
### OCR w określonych obszarach obrazów
Wszystkie metody skanowania i odczytu IronOCR dają możliwość dokładnego określenia, z której części strony lub stron chcemy odczytać tekst. Jest to bardzo przydatne w przypadku standardowych formularzy i pozwala zaoszczędzić dużo czasu oraz zwiększyć wydajność.
Aby korzystać z obszarów przycięcia, musimy dodać odwołanie systemowe do `System.Drawing`, abyśmy mogli używać obiektu `System.Drawing.Rectangle`.
```csharp
:path=/static-assets/ocr/content-code-examples/get-started/get-started-6.cs
```
### OCR dla skanów niskiej jakości
Klasa IronOCR `OcrInput` może naprawić skany, których zwykły Tesseract nie jest w stanie odczytać.
```csharp
:path=/static-assets/ocr/content-code-examples/get-started/get-started-7.cs
```
### Eksportuj wyniki OCR jako plik PDF z możliwością wyszukiwania
```csharp
:path=/static-assets/ocr/content-code-examples/get-started/get-started-8.cs
```
### Konwersja plików TIFF do formatu PDF z możliwością wyszukiwania
```csharp
:path=/static-assets/ocr/content-code-examples/get-started/get-started-9.cs
```
### Eksportuj wyniki OCR jako HTML
```csharp
:path=/static-assets/ocr/content-code-examples/get-started/get-started-10.cs
```
## Filtry poprawiające jakość obrazów OCR
IronOCR udostępnia unikalne filtry dla obiektów `OcrInput` w celu poprawy wydajności OCR.
### Przykład kodu poprawiającego jakość obrazu
```csharp
:path=/static-assets/ocr/content-code-examples/get-started/get-started-11.cs
```
### Lista filtrów obrazów OCR
Filtry wejściowe zwiększające wydajność OCR, wbudowane w IronOCR, obejmują:
- `OcrInput.Rotate(double degrees)` - Obraca obrazy o określoną liczbę stopni w prawo. Aby obrócić w lewo, należy użyć liczb ujemnych.
- `OcrInput.Binarize()` - Filtr ten zamienia każdy piksel na czarny lub biały bez odcieni pośrednich, co może poprawić wydajność OCR w przypadku obrazów o bardzo niskim kontraście.
- `OcrInput.ToGrayScale()` - Konwertuje każdy piksel na odcień skali szarości. Może to nie poprawić dokładności, ale może zwiększyć szybkość.
- `OcrInput.Contrast()` - Automatycznie zwiększa kontrast, często poprawiając szybkość i dokładność skanowania przy niskim kontraście.
- `OcrInput.DeNoise()` - Usuwa szum cyfrowy, zalecane tylko wtedy, gdy spodziewany jest szum.
- `OcrInput.Invert()` - Odwraca wszystkie kolory (biały staje się czarny i odwrotnie).
- `OcrInput.Dilate()` - Poszerza morfologię, dodaje piksele do granic obiektów, przeciwieństwo funkcji Erode.
- `OcrInput.Erode()` - Poszerza morfologię, usuwa piksele z granic obiektów, przeciwieństwo operacji Dilate.
- `OcrInput.Deskew()` - Obraca obraz, aby ustawić go we właściwym kierunku. Przydatne, ponieważ tolerancja Tesseract na przekrzywienie jest ograniczona.
- `OcrInput.EnhanceResolution` - Poprawia rozdzielczość obrazów o niskiej jakości. To ustawienie jest zazwyczaj używane do automatycznego zarządzania danymi wejściowymi o niskiej rozdzielczości (DPI).
- `EnhanceResolution` wykrywa obrazy o niskiej rozdzielczości (poniżej 275 dpi), zwiększa ich rozdzielczość i wyostrza tekst, aby uzyskać lepsze wyniki OCR. Chociaż jest to czasochłonne, często skraca to ogólny czas działania OCR.
- `Language` - Obsługuje wybór spośród 22 międzynarodowych pakietów językowych.
- `Strategy` - Umożliwia wybór między strategią szybką, ale mniej dokładną, a strategią zaawansowaną (wykorzystującą sztuczną inteligencję w celu zapewnienia dokładności) w oparciu o statystyczne powiązania między słowami.
- `ColorSpace` - Wybierz OCR w skali szarości lub w kolorze; Skala szarości jest zazwyczaj optymalna, choć w niektórych sytuacjach wymagających kontrastu lepszym rozwiązaniem może być kolor.
- `DetectWhiteTextOnDarkBackgrounds` - Dostosowuje się do obrazów o odwróconych kolorach, automatycznie wykrywając i odczytując biały tekst na ciemnym tle.
- `InputImageType` - Kieruje biblioteką OCR, określając, czy pracuje ona na całym dokumencie, czy na fragmencie.
- `RotateAndStraighten` - Umożliwia IronOCR prawidłową obsługę dokumentów, które są obrócone lub zniekształcone perspektywicznie.
- `ReadBarcodes` - Automatycznie odczytuje kody BarCode i kody QR równocześnie ze skanowaniem tekstu bez znaczącego wydłużenia czasu.
- `ColorDepth` - Określa liczbę bitów na piksel dla głębi kolorów w procesie OCR. Większa szczegółowość może podnieść jakość, ale też wydłużyć czas przetwarzania.
## 125 pakietów językowych
IronOCR obsługuje **125 języków międzynarodowych** za pośrednictwem pakietów językowych, które są dystrybuowane jako biblioteki DLL i dostępne do [pobrania z tej strony internetowej](/csharp/ocr/languages/) lub z [menedżera pakietów NuGet](https://www.nuget.org/packages?q=IronOcr.Languages).
Języki obejmują między innymi niemiecki, francuski, angielski, chiński i japoński. Dostępne są specjalistyczne pakiety językowe dla MRZ, czeków MICR, danych finansowych, tablic rejestracyjnych itp. Dodatkowo można używać niestandardowych plików Tesseract ".traineddata".
### Przykład języka
```csharp
// Reference to the path of the source file that demonstrates setting language packs for OCR
:path=/static-assets/ocr/content-code-examples/get-started/get-started-12.cs
```
### Przykład wielojęzyczny
Możliwe jest również korzystanie z OCR w wielu językach jednocześnie. Może to poprawić rozpoznawanie angielskich metadanych i adresów URL w dokumentach Unicode.
```csharp
// Reference to the path of the source file that demonstrates multi-language OCR
:path=/static-assets/ocr/content-code-examples/get-started/get-started-13.cs
```
## Szczegółowe wyniki OCR Obiekty
IronOCR zwraca obiekt wyniku OCR dla każdej operacji. Zazwyczaj programiści korzystają z właściwości `Text`, aby uzyskać zeskanowany tekst. Jednak obiekt wyników zawiera znacznie bardziej szczegółowe informacje.
```csharp
// Reference to the path of the source file demonstrating detailed OCR result object usage
:path=/static-assets/ocr/content-code-examples/get-started/get-started-14.cs
```
## Wydajność
IronOCR działa od razu po uruchomieniu, bez konieczności dostosowywania wydajności lub modyfikacji obrazów.
Szybkość jest niesamowita: IronOCR.2020+ działa nawet 10 razy szybciej i popełnia o ponad 250% mniej błędów niż poprzednie wersje.
## Dowiedz się więcej
Aby dowiedzieć się więcej o OCR w C#, VB, F# lub innym języku .NET, [przeczytaj nasze samouczki społecznościowe](/csharp/ocr/tutorials/how-to-read-text-from-an-image-in-csharp-net/), które zawierają praktyczne przykłady wykorzystania IronOCR i pokazują niuanse optymalizacji biblioteki IronOCR.
Dostępna jest również pełna [dokumentacja API dla programistów .NET](/csharp/ocr/object-reference/).
IronOCR to biblioteka oprogramowania w języku C#, umożliwiająca programistom platformy .NET rozpoznawanie i odczytywanie tekstu z obrazów oraz dokumentów PDF. Jest to biblioteka OCR oparta wyłącznie na platformie .NET, wykorzystująca najbardziej zaawansowany silnik Tesseract znany na rynku.
Instalacja
Zainstaluj za pomocą menedżera pakietów NuGet
Zainstaluj IronOCR w Visual Studio lub z wiersza poleceń za pomocą menedżera pakietów NuGet. W programie Visual Studio przejdź do konsoli za pomocą:
Narzędzia ->
Menedżer pakietów NuGet ->
Konsola menedżera pakietów
PM > Install-Package IronOcr
Install-Package IronOcr
Więcej informacji na temat aktualizacji wersji i instalacji można znaleźć w sekcji IronOCR na NuGet.
Dostępne są również inne pakiety IronOCR NuGet dla różnych platform:
Wraz z nową aktualizacją tego pakietu, IronOCR łączy zależności OpenCV w ramach pakietu, aby go usprawnić, tak więc jeśli programiści importujący obecnie zależności OpenCV otrzymają następujący błąd.
The type of namespace name `OpenCvSharp` could not be found(are you missing a using directive or an assembly reference)
The type of namespace name `OpenCvSharp` could not be found(are you missing a using directive or an assembly reference)
Text
Możesz spokojnie usunąć przestrzenie nazw OpenCV, a problem zostanie rozwiązany.
Instrukcje dotyczące instalacji .NET Framework 4.0+:
Dodaj plik IronOcr.dll z folderu net40 do swojego projektu
Następnie dodaj odwołania do bibliotek Assembly do:
System.Configuration
System.Drawing
System.Web
Instrukcje dotyczące .NET Standard, .NET Core 2.0+ i .NET 5
Dodaj plik IronOcr.dll z folderu netstandard2.0 do swojego projektu
Następnie dodaj odwołanie do pakietu NuGet do:
System.Drawing.Common 4.7 lub nowszy
Pobierz instalator IronOCR (tylko dla systemu Windows)
Inną opcją jest pobranie naszego instalatora IronOCR, który zainstaluje wszystkie zasoby niezbędne do natychmiastowego działania IronOCR. Należy pamiętać, że ta opcja jest dostępna wyłącznie dla systemów Windows. Aby pobrać instalator, kliknij tutaj. Po pobraniu pliku ZIP:
Instrukcje dotyczące instalacji .NET Framework 4.0+:
Dodaj plik IronOcr.dll z folderu net40 do swojego projektu
Następnie dodaj odwołania do bibliotek Assembly do:
System.Configuration
System.Drawing
System.Web
Instrukcje dotyczące .NET Standard, .NET Core 2.0+ i .NET 5
Dodaj plik IronOcr.dll z folderu netstandard2.0 do swojego projektu
Następnie dodaj odwołanie do pakietu NuGet do:
System.Drawing.Common 4.7 lub nowszy
Dlaczego warto wybrać IronOCR?
IronOCR to łatwa w instalacji, kompletna i dobrze udokumentowana biblioteka oprogramowania .NET.
Wybierz IronOCR, aby osiągnąć dokładność OCR na poziomie 99,8% bez korzystania z zewnętrznych usług internetowych, ponoszenia stałych opłat lub przesyłania poufnych dokumentów przez Internet.
Dlaczego programiści C# wybierają IronOCR zamiast Vanilla Tesseract:
Zainstaluj jako pojedynczy plik DLL lub NuGet
Zawiera gotowe do użycia silniki Tesseract 5, 4 i 3.
Dokładność na poziomie 99,8% znacznie przewyższa wyniki standardowego Tesseracta.
Ogromna szybkość i wielowątkowość
Kompatybilność z aplikacjami MVC, WebApp, Desktop, Console i Server
Nie ma plików Exe ani kodu C++ do pracy
Pełna obsługa OCR plików PDF
Przeprowadź OCR na niemal każdym pliku graficznym lub PDF
Pełna obsługa .NET Core, .NET Standard i Framework
Wdrażaj na Windows, Mac, Linux, Azure, Docker, Lambda, AWS
Odczytuj kody kreskowe i kody QR
Eksportuj wyniki OCR jako XHTML
Eksportuj OCR do dokumentów PDF z możliwością wyszukiwania
Obsługa wielowątkowości
125 języków międzynarodowych, zarządzanych za pośrednictwem plików NuGet lub OcrData
Pobieraj obrazy, współrzędne, statystyki i czcionki. Nie tylko tekst.
Może być wykorzystywane do redystrybucji OCR Tesseract w ramach komercyjnych i zastrzeżonych aplikacji.
IronOCR sprawdza się doskonale podczas pracy z rzeczywistymi obrazami i niedoskonałymi dokumentami, takimi jak zdjęcia lub skany o niskiej rozdzielczości, które mogą zawierać szumy cyfrowe lub niedoskonałości.
Inne bezpłatne biblioteki OCR dla platformy .NET, takie jak inne interfejsy API .NET Tesseract i usługi internetowe, nie sprawdzają się tak dobrze w tych rzeczywistych przypadkach użycia.
OCR with Tesseract 5 - Start Coding in C#
Poniższy przykład kodu pokazuje, jak łatwo odczytać tekst z obrazu przy użyciu języka C# lub VB .NET.
OneLiner
stringText = new IronTesseract().Read(@"img\Screenshot.png").Text;
string Text = new IronTesseract().Read(@"img\Screenshot.png").Text;
DimTextAsString = (New IronTesseract()).Read("img\Screenshot.png").Text
Dim Text As String = (New IronTesseract()).Read("img\Screenshot.png").Text
Konfigurowalny Hello World
using IronOcr;IronTesseract ocr = new IronTesseract();using OcrInput input = new OcrInput();// Add multiple imagesinput.LoadImage("images/sample.jpeg");OcrResult result = ocr.Read(input);Console.WriteLine(result.Text);
using IronOcr;
IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
// Add multiple images
input.LoadImage("images/sample.jpeg");
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
ImportsIronOcrPrivate ocr As New IronTesseract()PrivateOcrInputAsusing' Add multiple imagesinput.LoadImage("images/sample.jpeg")Dim result AsOcrResult = ocr.Read(input)Console.WriteLine(result.Text)
Imports IronOcr
Private ocr As New IronTesseract()
Private OcrInput As using
' Add multiple images
input.LoadImage("images/sample.jpeg")
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
C# PDF OCR
To samo podejście można wykorzystać do wyodrębniania tekstu z dowolnego dokumentu PDF.
using IronOcr;IronTesseract ocr = new IronTesseract();using OcrInput input = new OcrInput();// We can also select specific PDF page numbers to OCRinput.LoadPdf("example.pdf", Password: "password");OcrResult result = ocr.Read(input);Console.WriteLine(result.Text);// 1 page for every page of the PDFConsole.WriteLine($"{result.Pages.Length} Pages");
using IronOcr;
IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
// We can also select specific PDF page numbers to OCR
input.LoadPdf("example.pdf", Password: "password");
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
// 1 page for every page of the PDF
Console.WriteLine($"{result.Pages.Length} Pages");
ImportsIronOcrPrivate ocr As New IronTesseract()PrivateOcrInputAsusing' We can also select specific PDF page numbers to OCRinput.LoadPdf("example.pdf", Password:= "password")Dim result AsOcrResult = ocr.Read(input)Console.WriteLine(result.Text)' 1 page for every page of the PDFConsole.WriteLine($"{result.Pages.Length} Pages")
Imports IronOcr
Private ocr As New IronTesseract()
Private OcrInput As using
' We can also select specific PDF page numbers to OCR
input.LoadPdf("example.pdf", Password:= "password")
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
' 1 page for every page of the PDF
Console.WriteLine($"{result.Pages.Length} Pages")
OCR dla wielostronicowych plików TIFF
using IronOcr;IronTesseract ocr = new IronTesseract();using OcrInput input = new OcrInput();var pageindices = new int[] { 1, 2 };input.LoadImageFrames("multi-frame.tiff", pageindices);OcrResult result = ocr.Read(input);Console.WriteLine(result.Text);
using IronOcr;
IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames("multi-frame.tiff", pageindices);
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
ImportsIronOcrPrivate ocr As New IronTesseract()PrivateOcrInputAsusingPrivate pageindices = New Integer() { 1, 2 }input.LoadImageFrames("multi-frame.tiff", pageindices)Dim result AsOcrResult = ocr.Read(input)Console.WriteLine(result.Text)
Imports IronOcr
Private ocr As New IronTesseract()
Private OcrInput As using
Private pageindices = New Integer() { 1, 2 }
input.LoadImageFrames("multi-frame.tiff", pageindices)
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
BarCode i QR
Unikalną cechą IronOCR jest możliwość odczytywania kodów kreskowych i kodów QR z dokumentów podczas skanowania tekstu. Instancje klasy OcrResult.OcrBarcode dostarczają programistom szczegółowych informacji o każdym zeskanowanym BARCODE-ie.
using IronOcr;IronTesseract ocr = new IronTesseract();ocr.Configuration.ReadBarCodes = true;using OcrInput input = new OcrInput();input.LoadImage("img/Barcode.png");OcrResultResult = ocr.Read(input);foreach (varBarcodeinResult.Barcodes){ // type and location properties also exposedConsole.WriteLine(Barcode.Value);}
using IronOcr;
IronTesseract ocr = new IronTesseract();
ocr.Configuration.ReadBarCodes = true;
using OcrInput input = new OcrInput();
input.LoadImage("img/Barcode.png");
OcrResult Result = ocr.Read(input);
foreach (var Barcode in Result.Barcodes)
{
// type and location properties also exposed
Console.WriteLine(Barcode.Value);
}
ImportsIronOcrPrivate ocr As New IronTesseract()ocr.Configuration.ReadBarCodes = TrueUsing input As New OcrInput() input.LoadImage("img/Barcode.png") DimResultAsOcrResult = ocr.Read(input) For EachBarcodeInResult.Barcodes ' type and location properties also exposedConsole.WriteLine(Barcode.Value) NextBarcodeEndUsing
Imports IronOcr
Private ocr As New IronTesseract()
ocr.Configuration.ReadBarCodes = True
Using input As New OcrInput()
input.LoadImage("img/Barcode.png")
Dim Result As OcrResult = ocr.Read(input)
For Each Barcode In Result.Barcodes
' type and location properties also exposed
Console.WriteLine(Barcode.Value)
Next Barcode
End Using
OCR w określonych obszarach obrazów
Wszystkie metody skanowania i odczytu IronOCR dają możliwość dokładnego określenia, z której części strony lub stron chcemy odczytać tekst. Jest to bardzo przydatne w przypadku standardowych formularzy i pozwala zaoszczędzić dużo czasu oraz zwiększyć wydajność.
Aby korzystać z obszarów przycięcia, musimy dodać odwołanie systemowe do System.Drawing, abyśmy mogli używać obiektu System.Drawing.Rectangle.
using IronOcr;IronTesseract ocr = new IronTesseract();using OcrInput input = new OcrInput();// Dimensions are in pixelvar contentArea = new System.Drawing.Rectangle() { X = 215, Y = 1250, Height = 280, Width = 1335 };input.LoadImage("document.png", contentArea);OcrResult result = ocr.Read(input);Console.WriteLine(result.Text);
using IronOcr;
IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
// Dimensions are in pixel
var contentArea = new System.Drawing.Rectangle() { X = 215, Y = 1250, Height = 280, Width = 1335 };
input.LoadImage("document.png", contentArea);
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
ImportsIronOcrPrivate ocr As New IronTesseract()PrivateOcrInputAsusing' Dimensions are in pixelPrivate contentArea = New System.Drawing.Rectangle() With { .X = 215, .Y = 1250, .Height = 280, .Width = 1335}input.LoadImage("document.png", contentArea)Dim result AsOcrResult = ocr.Read(input)Console.WriteLine(result.Text)
Imports IronOcr
Private ocr As New IronTesseract()
Private OcrInput As using
' Dimensions are in pixel
Private contentArea = New System.Drawing.Rectangle() With {
.X = 215,
.Y = 1250,
.Height = 280,
.Width = 1335
}
input.LoadImage("document.png", contentArea)
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
OCR dla skanów niskiej jakości
Klasa IronOCR OcrInput może naprawić skany, których zwykły Tesseract nie jest w stanie odczytać.
using IronOcr;IronTesseract ocr = new IronTesseract();using OcrInput input = new OcrInput();var pageindices = new int[] { 1, 2 };input.LoadImageFrames(@"img\Potter.tiff", pageindices);// fixes digital noise and poor scanninginput.DeNoise();// fixes rotation and perspectiveinput.Deskew();OcrResult result = ocr.Read(input);Console.WriteLine(result.Text);
using IronOcr;
IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames(@"img\Potter.tiff", pageindices);
// fixes digital noise and poor scanning
input.DeNoise();
// fixes rotation and perspective
input.Deskew();
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
ImportsIronOcrPrivate ocr As New IronTesseract()PrivateOcrInputAsusingPrivate pageindices = New Integer() { 1, 2 }input.LoadImageFrames("img\Potter.tiff", pageindices)' fixes digital noise and poor scanninginput.DeNoise()' fixes rotation and perspectiveinput.Deskew()Dim result AsOcrResult = ocr.Read(input)Console.WriteLine(result.Text)
Imports IronOcr
Private ocr As New IronTesseract()
Private OcrInput As using
Private pageindices = New Integer() { 1, 2 }
input.LoadImageFrames("img\Potter.tiff", pageindices)
' fixes digital noise and poor scanning
input.DeNoise()
' fixes rotation and perspective
input.Deskew()
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
Eksportuj wyniki OCR jako plik PDF z możliwością wyszukiwania
using IronOcr;IronTesseract ocr = new IronTesseract();using OcrInput input = new OcrInput();input.Title = "Quarterly Report";input.LoadImage("image1.jpeg");input.LoadImage("image2.png");var pageindices = new int[] { 1, 2 };input.LoadImageFrames("image3.gif", pageindices);OcrResult result = ocr.Read(input);result.SaveAsSearchablePdf("searchable.pdf");
using IronOcr;
IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
input.Title = "Quarterly Report";
input.LoadImage("image1.jpeg");
input.LoadImage("image2.png");
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames("image3.gif", pageindices);
OcrResult result = ocr.Read(input);
result.SaveAsSearchablePdf("searchable.pdf");
ImportsIronOcrPrivate ocr As New IronTesseract()PrivateOcrInputAsusinginput.Title = "Quarterly Report"input.LoadImage("image1.jpeg")input.LoadImage("image2.png")Dim pageindices = New Integer() { 1, 2 }input.LoadImageFrames("image3.gif", pageindices)Dim result AsOcrResult = ocr.Read(input)result.SaveAsSearchablePdf("searchable.pdf")
Imports IronOcr
Private ocr As New IronTesseract()
Private OcrInput As using
input.Title = "Quarterly Report"
input.LoadImage("image1.jpeg")
input.LoadImage("image2.png")
Dim pageindices = New Integer() { 1, 2 }
input.LoadImageFrames("image3.gif", pageindices)
Dim result As OcrResult = ocr.Read(input)
result.SaveAsSearchablePdf("searchable.pdf")
Konwersja plików TIFF do formatu PDF z możliwością wyszukiwania
using IronOcr;IronTesseract ocr = new IronTesseract();using OcrInput input = new OcrInput();var pageindices = new int[] { 1, 2 };input.LoadImageFrames("example.tiff", pageindices);ocr.Read(input).SaveAsSearchablePdf("searchable.pdf");
using IronOcr;
IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames("example.tiff", pageindices);
ocr.Read(input).SaveAsSearchablePdf("searchable.pdf");
ImportsIronOcrPrivate ocr As New IronTesseract()PrivateOcrInputAsusingPrivate pageindices = New Integer() { 1, 2 }input.LoadImageFrames("example.tiff", pageindices)ocr.Read(input).SaveAsSearchablePdf("searchable.pdf")
Imports IronOcr
Private ocr As New IronTesseract()
Private OcrInput As using
Private pageindices = New Integer() { 1, 2 }
input.LoadImageFrames("example.tiff", pageindices)
ocr.Read(input).SaveAsSearchablePdf("searchable.pdf")
Eksportuj wyniki OCR jako HTML
using IronOcr;IronTesseract ocr = new IronTesseract();using OcrInput input = new OcrInput();input.Title = "Html Title";input.LoadImage("image1.jpeg");OcrResultResult = ocr.Read(input);Result.SaveAsHocrFile("results.html");
using IronOcr;
IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
input.Title = "Html Title";
input.LoadImage("image1.jpeg");
OcrResult Result = ocr.Read(input);
Result.SaveAsHocrFile("results.html");
ImportsIronOcrPrivate ocr As New IronTesseract()PrivateOcrInputAsusinginput.Title = "Html Title"input.LoadImage("image1.jpeg")DimResultAsOcrResult = ocr.Read(input)Result.SaveAsHocrFile("results.html")
Imports IronOcr
Private ocr As New IronTesseract()
Private OcrInput As using
input.Title = "Html Title"
input.LoadImage("image1.jpeg")
Dim Result As OcrResult = ocr.Read(input)
Result.SaveAsHocrFile("results.html")
Filtry poprawiające jakość obrazów OCR
IronOCR udostępnia unikalne filtry dla obiektów OcrInput w celu poprawy wydajności OCR.
Przykład kodu poprawiającego jakość obrazu
using IronOcr;IronTesseract ocr = new IronTesseract();using OcrInput input = new OcrInput();input.LoadImage("LowQuality.jpeg");// fixes digital noise and poor scanninginput.DeNoise();// fixes rotation and perspectiveinput.Deskew();OcrResult result = ocr.Read(input);Console.WriteLine(result.Text);
using IronOcr;
IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
input.LoadImage("LowQuality.jpeg");
// fixes digital noise and poor scanning
input.DeNoise();
// fixes rotation and perspective
input.Deskew();
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
ImportsIronOcrPrivate ocr As New IronTesseract()PrivateOcrInputAsusinginput.LoadImage("LowQuality.jpeg")' fixes digital noise and poor scanninginput.DeNoise()' fixes rotation and perspectiveinput.Deskew()Dim result AsOcrResult = ocr.Read(input)Console.WriteLine(result.Text)
Imports IronOcr
Private ocr As New IronTesseract()
Private OcrInput As using
input.LoadImage("LowQuality.jpeg")
' fixes digital noise and poor scanning
input.DeNoise()
' fixes rotation and perspective
input.Deskew()
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
Lista filtrów obrazów OCR
Filtry wejściowe zwiększające wydajność OCR, wbudowane w IronOCR, obejmują:
OcrInput.Rotate(double degrees) - Obraca obrazy o określoną liczbę stopni w prawo. Aby obrócić w lewo, należy użyć liczb ujemnych.
OcrInput.Binarize() - Filtr ten zamienia każdy piksel na czarny lub biały bez odcieni pośrednich, co może poprawić wydajność OCR w przypadku obrazów o bardzo niskim kontraście.
OcrInput.ToGrayScale() - Konwertuje każdy piksel na odcień skali szarości. Może to nie poprawić dokładności, ale może zwiększyć szybkość.
OcrInput.Contrast() - Automatycznie zwiększa kontrast, często poprawiając szybkość i dokładność skanowania przy niskim kontraście.
OcrInput.DeNoise() - Usuwa szum cyfrowy, zalecane tylko wtedy, gdy spodziewany jest szum.
OcrInput.Invert() - Odwraca wszystkie kolory (biały staje się czarny i odwrotnie).
OcrInput.Dilate() - Poszerza morfologię, dodaje piksele do granic obiektów, przeciwieństwo funkcji Erode.
OcrInput.Erode() - Poszerza morfologię, usuwa piksele z granic obiektów, przeciwieństwo operacji Dilate.
OcrInput.Deskew() - Obraca obraz, aby ustawić go we właściwym kierunku. Przydatne, ponieważ tolerancja Tesseract na przekrzywienie jest ograniczona.
OcrInput.EnhanceResolution - Poprawia rozdzielczość obrazów o niskiej jakości. To ustawienie jest zazwyczaj używane do automatycznego zarządzania danymi wejściowymi o niskiej rozdzielczości (DPI).
EnhanceResolution wykrywa obrazy o niskiej rozdzielczości (poniżej 275 dpi), zwiększa ich rozdzielczość i wyostrza tekst, aby uzyskać lepsze wyniki OCR. Chociaż jest to czasochłonne, często skraca to ogólny czas działania OCR.
Language - Obsługuje wybór spośród 22 międzynarodowych pakietów językowych.
Strategy - Umożliwia wybór między strategią szybką, ale mniej dokładną, a strategią zaawansowaną (wykorzystującą sztuczną inteligencję w celu zapewnienia dokładności) w oparciu o statystyczne powiązania między słowami.
ColorSpace - Wybierz OCR w skali szarości lub w kolorze; Skala szarości jest zazwyczaj optymalna, choć w niektórych sytuacjach wymagających kontrastu lepszym rozwiązaniem może być kolor.
DetectWhiteTextOnDarkBackgrounds - Dostosowuje się do obrazów o odwróconych kolorach, automatycznie wykrywając i odczytując biały tekst na ciemnym tle.
InputImageType - Kieruje biblioteką OCR, określając, czy pracuje ona na całym dokumencie, czy na fragmencie.
RotateAndStraighten - Umożliwia IronOCR prawidłową obsługę dokumentów, które są obrócone lub zniekształcone perspektywicznie.
ReadBarcodes - Automatycznie odczytuje kody BarCode i kody QR równocześnie ze skanowaniem tekstu bez znaczącego wydłużenia czasu.
ColorDepth - Określa liczbę bitów na piksel dla głębi kolorów w procesie OCR. Większa szczegółowość może podnieść jakość, ale też wydłużyć czas przetwarzania.
Języki obejmują między innymi niemiecki, francuski, angielski, chiński i japoński. Dostępne są specjalistyczne pakiety językowe dla MRZ, czeków MICR, danych finansowych, tablic rejestracyjnych itp. Dodatkowo można używać niestandardowych plików Tesseract ".traineddata".
Przykład języka
using IronOcr;// PM> Install IronOcr.Languages.ArabicIronTesseract ocr = new IronTesseract();ocr.Language = OcrLanguage.Arabic;using OcrInput input = new OcrInput();var pageindices = new int[] { 1, 2 };input.LoadImageFrames("img/arabic.gif", pageindices);// Add image filters if needed// In this case, even thought input is very low quality// IronTesseract can read what conventional Tesseract cannot.OcrResult result = ocr.Read(input);// Console can't print Arabic on Windows easily.// Let's save to disk instead.result.SaveAsTextFile("arabic.txt");
using IronOcr;
// PM> Install IronOcr.Languages.Arabic
IronTesseract ocr = new IronTesseract();
ocr.Language = OcrLanguage.Arabic;
using OcrInput input = new OcrInput();
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames("img/arabic.gif", pageindices);
// Add image filters if needed
// In this case, even thought input is very low quality
// IronTesseract can read what conventional Tesseract cannot.
OcrResult result = ocr.Read(input);
// Console can't print Arabic on Windows easily.
// Let's save to disk instead.
result.SaveAsTextFile("arabic.txt");
ImportsIronOcr' PM> Install IronOcr.Languages.ArabicPrivate ocr As New IronTesseract()ocr.Language = OcrLanguage.ArabicUsing input As New OcrInput() Dim pageindices = New Integer() { 1, 2 } input.LoadImageFrames("img/arabic.gif", pageindices) ' Add image filters if needed ' In this case, even thought input is very low quality ' IronTesseract can read what conventional Tesseract cannot. Dim result AsOcrResult = ocr.Read(input) ' Console can't print Arabic on Windows easily. ' Let's save to disk instead. result.SaveAsTextFile("arabic.txt")EndUsing
Imports IronOcr
' PM> Install IronOcr.Languages.Arabic
Private ocr As New IronTesseract()
ocr.Language = OcrLanguage.Arabic
Using input As New OcrInput()
Dim pageindices = New Integer() { 1, 2 }
input.LoadImageFrames("img/arabic.gif", pageindices)
' Add image filters if needed
' In this case, even thought input is very low quality
' IronTesseract can read what conventional Tesseract cannot.
Dim result As OcrResult = ocr.Read(input)
' Console can't print Arabic on Windows easily.
' Let's save to disk instead.
result.SaveAsTextFile("arabic.txt")
End Using
Przykład wielojęzyczny
Możliwe jest również korzystanie z OCR w wielu językach jednocześnie. Może to poprawić rozpoznawanie angielskich metadanych i adresów URL w dokumentach Unicode.
using IronOcr;// PM> Install IronOcr.Languages.ChineseSimplifiedIronTesseract ocr = new IronTesseract();ocr.Language = OcrLanguage.ChineseSimplified;// We can add any number of languagesocr.AddSecondaryLanguage(OcrLanguage.English);using OcrInput input = new OcrInput();input.LoadPdf("multi-language.pdf");OcrResult result = ocr.Read(input);result.SaveAsTextFile("results.txt");
using IronOcr;
// PM> Install IronOcr.Languages.ChineseSimplified
IronTesseract ocr = new IronTesseract();
ocr.Language = OcrLanguage.ChineseSimplified;
// We can add any number of languages
ocr.AddSecondaryLanguage(OcrLanguage.English);
using OcrInput input = new OcrInput();
input.LoadPdf("multi-language.pdf");
OcrResult result = ocr.Read(input);
result.SaveAsTextFile("results.txt");
ImportsIronOcr' PM> Install IronOcr.Languages.ChineseSimplifiedPrivate ocr As New IronTesseract()ocr.Language = OcrLanguage.ChineseSimplified' We can add any number of languagesocr.AddSecondaryLanguage(OcrLanguage.English)Using input As New OcrInput() input.LoadPdf("multi-language.pdf") Dim result AsOcrResult = ocr.Read(input) result.SaveAsTextFile("results.txt")EndUsing
Imports IronOcr
' PM> Install IronOcr.Languages.ChineseSimplified
Private ocr As New IronTesseract()
ocr.Language = OcrLanguage.ChineseSimplified
' We can add any number of languages
ocr.AddSecondaryLanguage(OcrLanguage.English)
Using input As New OcrInput()
input.LoadPdf("multi-language.pdf")
Dim result As OcrResult = ocr.Read(input)
result.SaveAsTextFile("results.txt")
End Using
Szczegółowe wyniki OCR Obiekty
IronOCR zwraca obiekt wyniku OCR dla każdej operacji. Zazwyczaj programiści korzystają z właściwości Text, aby uzyskać zeskanowany tekst. Jednak obiekt wyników zawiera znacznie bardziej szczegółowe informacje.
using IronOcr;IronTesseract ocr = new IronTesseract();// Must be set to true to read barcodeocr.Configuration.ReadBarCodes = true;using OcrInput input = new OcrInput();var pageindices = new int[] { 1, 2 };input.LoadImageFrames(@"img\sample.tiff", pageindices);OcrResult result = ocr.Read(input);var pages = result.Pages;var words = pages[0].Words;var barcodes = result.Barcodes;// Explore here to find a massive, detailed API:// - Pages, Blocks, Paraphaphs, Lines, Words, Chars// - Image Export, Fonts Coordinates, Statistical Data, Tables
using IronOcr;
IronTesseract ocr = new IronTesseract();
// Must be set to true to read barcode
ocr.Configuration.ReadBarCodes = true;
using OcrInput input = new OcrInput();
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames(@"img\sample.tiff", pageindices);
OcrResult result = ocr.Read(input);
var pages = result.Pages;
var words = pages[0].Words;
var barcodes = result.Barcodes;
// Explore here to find a massive, detailed API:
// - Pages, Blocks, Paraphaphs, Lines, Words, Chars
// - Image Export, Fonts Coordinates, Statistical Data, Tables
ImportsIronOcrPrivate ocr As New IronTesseract()' Must be set to true to read barcodeocr.Configuration.ReadBarCodes = TrueUsing input As New OcrInput() Dim pageindices = New Integer() { 1, 2 } input.LoadImageFrames("img\sample.tiff", pageindices) Dim result AsOcrResult = ocr.Read(input) Dim pages = result.Pages Dim words = pages(0).Words Dim barcodes = result.Barcodes ' Explore here to find a massive, detailed API: ' - Pages, Blocks, Paraphaphs, Lines, Words, Chars ' - Image Export, Fonts Coordinates, Statistical Data, TablesEndUsing
Imports IronOcr
Private ocr As New IronTesseract()
' Must be set to true to read barcode
ocr.Configuration.ReadBarCodes = True
Using input As New OcrInput()
Dim pageindices = New Integer() { 1, 2 }
input.LoadImageFrames("img\sample.tiff", pageindices)
Dim result As OcrResult = ocr.Read(input)
Dim pages = result.Pages
Dim words = pages(0).Words
Dim barcodes = result.Barcodes
' Explore here to find a massive, detailed API:
' - Pages, Blocks, Paraphaphs, Lines, Words, Chars
' - Image Export, Fonts Coordinates, Statistical Data, Tables
End Using
Wydajność
IronOCR działa od razu po uruchomieniu, bez konieczności dostosowywania wydajności lub modyfikacji obrazów.
Szybkość jest niesamowita: IronOCR.2020+ działa nawet 10 razy szybciej i popełnia o ponad 250% mniej błędów niż poprzednie wersje.
Dowiedz się więcej
Aby dowiedzieć się więcej o OCR w C#, VB, F# lub innym języku .NET, przeczytaj nasze samouczki społecznościowe, które zawierają praktyczne przykłady wykorzystania IronOCR i pokazują niuanse optymalizacji biblioteki IronOCR.
Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podręczników.