Lesen von Text aus Bildern mit C# OCR

This article was translated from English: Does it need improvement?
Translated
View the article in English

In diesem Tutorial lernen wir, wie man Bilder in C# und andere .NET-Sprachen in Text konvertiert.

Lesen von Text aus Bildern in .NET-Anwendungen

Wir werden die Klasse IronOcr.IronTesseract verwenden, um Text in Bildern zu erkennen, und die Feinheiten der Verwendung von Iron Tesseract OCR betrachten, um die höchste Leistung in Bezug auf Genauigkeit und Geschwindigkeit beim Lesen von Text aus Bildern in .NET zu erzielen

Um "Image to Text" zu erreichen, werden wir die IronOCR-Bibliothek in ein Visual Studio-Projekt installieren.

Zu diesem Zweck laden wir die IronOcr DLL oder verwenden NuGet .

Install-Package IronOcr

Warum IronOCR?

Wir verwenden IronOCR für die Tesseract-Verwaltung, weil es uns einzigartig ist:

  • Funktioniert direkt nach dem Auspacken in reinem .NET
  • Tesseract muss nicht auf Ihrem Rechner installiert sein.
  • Läuft mit den neuesten Engines: Tesseract 5( sowie Tesseract 4 & 3)
  • Ist für jedes .NET-Projekt verfügbar: .NET-Framework 4.5 +, .NET-Standard 2 + und .NET Core 2, 3 & 5!
  • Verbesserte Genauigkeit und Geschwindigkeit gegenüber dem herkömmlichen Tesseract
  • Unterstützt Xamarin, Mono, Azure und Docker
  • Verwalten des komplexen Tesseract-Wörterbuchsystems mit NuGet-Paketen
  • Unterstützt PDFS, MultiFrame Tiffs und alle wichtigen Bildformate ohne Konfiguration
  • Kann schlechte und verzerrte Scans korrigieren, um die besten Ergebnisse mit Tesseract zu erzielen.

    C# NuGet-Bibliothek für OCR

    Installieren mit NuGet

    Install-Package IronOcr
    oder
    Java PDF JAR

    Herunterladen DLL

    DLL herunterladen

    Manuelle Installation in Ihr Projekt

    C# NuGet-Bibliothek für OCR

    Installieren mit NuGet

    Install-Package IronOcr
    oder
    Java PDF JAR

    Herunterladen DLL

    DLL herunterladen

    Manuelle Installation in Ihr Projekt

    Fangen Sie noch heute an, IronPDF in Ihrem Projekt mit einer kostenlosen Testversion zu verwenden.

    Erster Schritt:
    green arrow pointer

    Schau dir an IronOCR an Nuget Für schnelle Installation und Bereitstellung. Mit über 8 Millionen Downloads verwandelt es OCR mit C#.

    C# NuGet-Bibliothek für OCR nuget.org/packages/IronOcr/
    Install-Package IronOcr

    Erwägen Sie die Installation der IronOCR DLL direkt. Laden Sie es herunter und installieren Sie es manuell für Ihr Projekt oder die GAC-Form: IronOcr.zip

    Manuelle Installation in Ihr Projekt

    DLL herunterladen

Verwendung von Tesseract in C##

In diesem einfachen Beispiel können Sie sehen, dass wir die IronOcr.IronTesseract klasse, um den Text aus einem Bild zu lesen und seinen Wert automatisch als Zeichenkette zurückzugeben.

:path=/static-assets/ocr/content-code-examples/tutorials/how-to-read-text-from-an-image-in-csharp-net-1.cs
// PM> Install-Package IronOcr
using IronOcr;

OcrResult result = new IronTesseract().Read(@"img\Screenshot.png");
Console.WriteLine(result.Text);
' PM> Install-Package IronOcr
Imports IronOcr

Private result As OcrResult = (New IronTesseract()).Read("img\Screenshot.png")
Console.WriteLine(result.Text)
VB   C#

Das Ergebnis ist eine 100%ige Übereinstimmung mit dem folgenden Text:

IronOCR Simple Example
In this simple example we will test the accuracy of our C# OCR library to read text from a PNG
Image. This is a very basic test, but things will get more complicated as the tutorial continues.
The quick brown fox jumps over the lazy dog

Auch wenn dies sehr simpel erscheinen mag, spielen sich unter der Oberfläche komplexe Vorgänge ab: Scannen des Bildes auf Ausrichtung, Qualität und Auflösung, Prüfung der Bildeigenschaften, Optimierung der OCR-Engine und Einsatz eines trainierten Netzwerks künstlicher Intelligenz, um den Text dann wie ein Mensch zu lesen.

Die OCR ist für einen Computer nicht einfach zu bewerkstelligen, und die Lesegeschwindigkeit kann mit der eines Menschen vergleichbar sein. Mit anderen Worten: OCR ist kein sofortiger Prozess. In diesem Fall ist sie jedoch zu 100 % korrekt.

C# OCR-Anwendung Ergebnisgenauigkeit

Fortgeschrittene Verwendung von IronOCR Tesseract für C#

In den meisten realen Anwendungsfällen wollen die Entwickler die bestmögliche Leistung für ihr Projekt. In diesem Fall empfehlen wir, dass Sie mit dem OcrInput und EisenTesserakt klassen innerhalb des IronOcr-Namensraumes.

mit OcrInput** können Sie die spezifischen Merkmale eines OCR-Auftrags festlegen, wie z. B.:

  • Arbeit mit fast allen Bildtypen, einschließlich JPEG, TIFF, GIF, BMP und PNG
  • Importieren ganzer PDF-Dokumente oder von Teilen davon
  • Verbessern von Kontrast, Auflösung und Größe
  • Korrektur von Drehung, Scan-Rauschen, digitalem Rauschen, Schräglage, Negativbildern

    IronTesseract

  • Wählen Sie aus Hunderten von vorgefertigten Sprachen und Sprachvarianten
  • Verwendung von Tesseract 5, 4 oder 3 OCR-Engines "out-of-the-box"
  • Geben Sie einen Dokumententyp an, ob es sich um einen Screenshot, einen Ausschnitt oder ein ganzes Dokument handelt
  • Barcodes lesen
  • Ausgabe der Ergebnisse in: Durchsuchbare PDFs, Hocr HTML, ein DOM & Strings

Beispiel: Erste Schritte mit OcrInput + IronTesseract

Das alles mag entmutigend erscheinen, aber im folgenden Beispiel sehen Sie die Standardeinstellungen, mit denen Sie beginnen sollten und die mit fast jedem Bild funktionieren, das Sie in IronOCR eingeben.

:path=/static-assets/ocr/content-code-examples/tutorials/how-to-read-text-from-an-image-in-csharp-net-2.cs
using IronOcr;

IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames(@"img\Potter.tiff", pageindices);
OcrResult result = 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)
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
VB   C#

Wir können dies sogar bei einem Scan mittlerer Qualität mit 100%iger Genauigkeit anwenden.

C# OCR Scan von Tiff Beispiel

Wie Sie sehen können, lesen Sie den Text(und optional Barcodes) aus einem gescannten Bild wie z. B. einem TIFF war recht einfach. Dieser OCR-Auftrag ergibt eine Genauigkeit von 100%.

OCR ist keine perfekte Wissenschaft, wenn es um Dokumente aus der realen Welt geht, aber IronTesseract ist so gut, wie es nur geht.

Sie werden auch feststellen, dass IronOCR automatisch mehrseitige Dokumente lesen kann, wie z. B. TIFFs und sogartext aus PDF-Dokumenten extrahieren automatisch.

Beispiel: Ein Scan von geringer Qualität


C# OCR Scan mit niedriger Auflösung und digitalem Rauschen
Jetzt versuchen wir es mit einem Scan derselben Seite in viel schlechterer Qualität, mit niedriger DPI, der viele Verzerrungen, digitales Rauschen und Schäden am Originalpapier aufweist.

Hier kann IronOCR gegenüber anderen OCR-Bibliotheken wie Tesseract wirklich glänzen, und wir werden feststellen, dass alternative OCR-Projekte sich scheuen, darüber zu diskutieren. OCR an realen gescannten Bildern und nicht an unrealistisch "perfekten" Testfällen, die digital erstellt wurden, um eine 100%ige OCR-Genauigkeit zu erreichen.

:path=/static-assets/ocr/content-code-examples/tutorials/how-to-read-text-from-an-image-in-csharp-net-3.cs
using IronOcr;

IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames(@"img\Potter.LowQuality.tiff", pageindices);
input.Deskew(); // removes rotation and perspective
OcrResult result = 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.LowQuality.tiff", pageindices)
input.Deskew() ' removes rotation and perspective
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
VB   C#

Ohne Hinzufügen von Input.Deskew(), um das Bild zu begradigen, erhalten wir eine Genauigkeit von 52,5 %. Nicht gut genug.

Hinzufügen von `Input.Deskew()bringt uns zu einer Genauigkeit von 99,8%, was einer fast so genau wie die OCR eines hochwertigen Scans.

Bildfilter benötigen zwar etwas mehr Zeit für die Ausführung, verkürzen aber auch die OCR-Verarbeitungszeit. Es ist ein schmaler Grat, auf dem ein Entwickler seine Eingabedokumente kennenlernen muss.

Wenn Sie sich nicht sicher sind:

  • input.Deskew()` ist ein sicherer und sehr erfolgreicher Filter zu verwenden.
  • Zweitens versuchen Sie Input.DeNoise() um erhebliches digitales Rauschen zu beheben.

Leistungsoptimierung

Der wichtigste Faktor für die Geschwindigkeit eines OCR-Auftrags ist in der Tat die Qualität des Eingabebildes. Je weniger Hintergrundrauschen vorhanden ist und je höher die dpi sind, wobei die perfekte Ziel-Dpi bei etwa 200 dpi liegt, desto schneller und genauer sind die OCR-Ergebnisse.

Dies ist jedoch nicht notwendig, da IronOCR bei der Korrektur von unvollkommenen Dokumenten brilliert(obwohl dies zeitaufwändig ist und dazu führt, dass Ihre OCR-Aufträge mehr CPU-Zyklen benötigen).

Wenn möglich, kann die Wahl von Eingabebildformaten mit weniger digitalem Rauschen, wie z. B. TIFF oder PNG, auch schnellere Ergebnisse liefern als verlustbehaftet bildformate wie JPEG.

Bild-Filter

Die folgenden Bildfilter können die Leistung deutlich verbessern:

  • OcrInput.Rotate( doppelabschlüsse) - Dreht Bilder um eine bestimmte Gradzahl im Uhrzeigersinn. Für eine Drehung gegen den Uhrzeigersinn verwenden Sie negative Zahlen.
  • OcrInput.Binarize() - Dieser Bildfilter macht jedes Pixel schwarz oder weiß, ohne einen Mittelweg zu finden. Kann die OCR-Leistung in Fällen mit sehr geringem Kontrast zwischen Text und Hintergrund verbessern.
  • OcrInput.ToGrayScale() - Dieser Bildfilter verwandelt jedes Pixel in einen Graustufenwert. Wird die OCR-Genauigkeit wahrscheinlich nicht verbessern, kann aber die Geschwindigkeit erhöhen
  • OcrInput.Contrast() - Erhöht den Kontrast automatisch. Dieser Filter verbessert häufig die OCR-Geschwindigkeit und -Genauigkeit bei Scans mit geringem Kontrast.
  • OcrInput.DeNoise() - Entfernt digitales Rauschen. Dieser Filter sollte nur verwendet werden, wenn Rauschen zu erwarten ist.
  • OcrInput.Invert() - Invertiert jede Farbe. Z. B. Weiß wird schwarz: Schwarz wird weiß.
  • OcrInput.Dilate() - Morphologie für Fortgeschrittene. mit Dilatation werden Pixel zu den Grenzen von Objekten in einem Bild hinzugefügt. Gegenüber von Erode
  • OcrInput.Erode() - Morphologie für Fortgeschrittene. Erosion entfernt Pixel an ObjektgrenzenGegenstück von Dilate
  • OcrInput.Deskew() - Dreht ein Bild so, dass es richtig herum und orthogonal ist. Dies ist für die OCR sehr nützlich, da die Toleranz von Tesseract bei schiefen Scans bis zu 5 Grad betragen kann.
  • OcrInput.DeepCleanBackgroundNoise() - Entfernung starker Hintergrundgeräusche. Verwenden Sie diesen Filter nur, wenn ein extremes Hintergrundrauschen des Dokuments bekannt ist, da dieser Filter auch die OCR-Genauigkeit von sauberen Dokumenten beeinträchtigen kann und sehr rechenintensiv ist.
  • OcrInput.EnhanceResolution - Verbessert die Auflösung von Bildern geringer Qualität. Dieser Filter wird nicht oft benötigt, da OcrInput.MinimumDPI und OcrInput.TargetDPI automatisch Eingaben mit niedriger Auflösung erfassen und auflösen.

Leistungstuning für Geschwindigkeit

Mit Iron Tesseract können wir die OCR bei Scans höherer Qualität beschleunigen.

Wenn wir die Geschwindigkeit optimieren, könnten wir an dieser Position beginnen und dann die Funktionen wieder einschalten, bis wir die perfekte Balance gefunden haben.

:path=/static-assets/ocr/content-code-examples/tutorials/how-to-read-text-from-an-image-in-csharp-net-4.cs
using IronOcr;

IronTesseract ocr = new IronTesseract();

// Configure for speed
ocr.Configuration.BlackListCharacters = "~`$#^*_}{][|\\";
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.Auto;
ocr.Language = OcrLanguage.EnglishFast;

using OcrInput input = new OcrInput();
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames(@"img\Potter.tiff", pageindices);

OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
Imports IronOcr

Private ocr As New IronTesseract()

' Configure for speed
ocr.Configuration.BlackListCharacters = "~`$#^*_}{][|\"
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.Auto
ocr.Language = OcrLanguage.EnglishFast

Using input As New OcrInput()
	Dim pageindices = New Integer() { 1, 2 }
	input.LoadImageFrames("img\Potter.tiff", pageindices)
	
	Dim result As OcrResult = ocr.Read(input)
	Console.WriteLine(result.Text)
End Using
VB   C#

Dieses Ergebnis ist 99,8 % genau, verglichen mit dem Basiswert 100 % - aber 35 % schneller.

Ausgeschnittene Bereiche von Bildern lesen

Wie das folgende Codebeispiel zeigt, ist Iron's Fork von Tesseract OCR in der Lage, bestimmte Bereiche von Bildern zu lesen.

Wir können eine System.Drawing.Rectangle um den genauen Bereich eines Bildes, der gelesen werden soll, in Pixeln anzugeben.

Dies kann sehr nützlich sein, wenn es sich um ein standardisiertes Formular handelt, das ausgefüllt wird und in dem nur ein bestimmter Bereich Text enthält, der sich von Fall zu Fall ändert.

Beispiel: Scannen eines Bereichs einer Seite

Wir können eine System.Drawing.Rectangle um einen Bereich festzulegen, in dem wir ein Dokument lesen werden. Die Maßeinheit ist immer Pixel.

Wir werden sehen, dass dies zu Geschwindigkeitssteigerungen führt und das Lesen von unnötigem Text vermeidet. In diesem Beispiel lesen wir den Namen eines Schülers aus einem zentralen Bereich eines standardisierten Dokuments.

C# OCR Scan von Tiff Beispiel   C# OCR Scan von Tiff Beispiel


:path=/static-assets/ocr/content-code-examples/tutorials/how-to-read-text-from-an-image-in-csharp-net-5.cs
using IronOcr;
using IronSoftware.Drawing;

IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
// a 41% improvement on speed
Rectangle contentArea = new Rectangle(x: 215, y: 1250, height: 280, width: 1335);
input.LoadImage("img/ComSci.png", contentArea);
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
Imports IronOcr
Imports IronSoftware.Drawing

Private ocr As New IronTesseract()
Private OcrInput As using
' a 41% improvement on speed
Private contentArea As New Rectangle(x:= 215, y:= 1250, height:= 280, width:= 1335)
input.LoadImage("img/ComSci.png", contentArea)
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
VB   C#

Dies führt zu einem Geschwindigkeitszuwachs von 41% - und ermöglicht es uns, genau zu sein. Dies ist unglaublich nützlich für _.NET OCR-Szenarien, in denen Dokumente ähnlich und konsistent sind, wie Rechnungen, Quittungen, Schecks, Formulare, Spesenabrechnungen usw.

ContentAreas(OCR-Zuschnitt) wird auch beim Lesen von PDF-Dateien unterstützt.

Internationale Sprachen

IronOCR unterstützt 125 internationale Sprachen über Sprachpakete, die als DLLs verteilt werden. Diese können von dieser Website oder auch vom NuGet Package Manager für Visual Studio heruntergeladen werden.

Wir können sie installieren, indem wir NuGet aufrufen(suche nach "IronOcr.Languages") oder von derOCR-Sprachpakete Seite.

Folgende Sprachen werden unterstützt:

  • Afrikaans
  • Amharisch Auch bekannt als አማርኛ
  • Arabisch Auch bekannt als العربية
  • ArabischesAlphabet Auch bekannt als العربية
  • ArmenischesAlphabet Auch bekannt als Հայերեն
  • Assamese Auch bekannt als অসমীয়া
  • Aserbaidschanisch auch bekannt als azərbaycan dili
  • AserbaidschanischKyrillisch auch bekannt als azərbaycan dili
  • Weißrussisch Auch bekannt als беларуская мова
  • Bengali auch bekannt als Bangla,বাংলা
  • BengaliAlphabet auch bekannt als Bangla,বাংলা
  • Tibetisch auch bekannt als Tibetan Standard, Tibetan, Central ཡིག་
  • Bosnisch auch bekannt als bosanski jezik
  • Bretonisch auch bekannt als brezhoneg
  • Bulgarisch Auch bekannt als български език
  • CanadianAboriginalAlphabet Auch bekannt als Canadian First Nations, Indigenous Canadians, Native Canadian, Inuit
  • Katalanisch auch bekannt als català, valencià
  • Cebuano auch bekannt als Bisaya, Binisaya
  • Tschechisch Auch bekannt als čeština, český jazyk
  • CherokeeAlphabet Auch bekannt als ᏣᎳᎩ ᎦᏬᏂᎯᏍᏗ, Tsalagi Gawonihisdi
  • ChineseSimplified Auch bekannt als 中文(Zhōngwén), 汉语, 漢語
  • ChineseSimplifiedVertical Auch bekannt als 中文(Zhōngwén), 汉语, 漢語
  • ChinesischTraditionell Auch bekannt als 中文(Zhōngwén), 汉语, 漢語
  • ChineseTraditionalVertical Auch bekannt als 中文(Zhōngwén), 汉语, 漢語
  • Cherokee Auch bekannt als ᏣᎳᎩ ᎦᏬᏂᎯᏍᏗ, Tsalagi Gawonihisdi
  • Korsisch auch bekannt als corsu, lingua corsa
  • Walisisch auch bekannt als Cymraeg
  • KyrillischesAlphabet auch bekannt als kyrillische Schriften
  • Dänisch auch bekannt als dansk
  • DanishFraktur auch bekannt als dansk
  • Deutsch Auch bekannt als Deutsch
  • GermanFraktur Auch bekannt als Deutsch
  • DevanagariAlphabet Auch bekannt als Nagair,देवनागरी
  • Divehi Auch bekannt als ދިވެހި
  • Dzongkha auch bekannt als རྫོང་ཁ
  • Griechisch Auch bekannt als ελληνικά
  • Englisch
  • Mittelenglisch auch bekannt als Englisch(1100-1500 N. CHR)
  • Esperanto
  • Estnisch auch bekannt als eesti, eesti keel
  • ÄthiopischesAlphabet Auch bekannt als Ge'ez,ግዕዝ, Gəʿəz
  • Baskisch Auch bekannt als euskara, euskera
  • Färöisch auch bekannt als føroyskt
  • Persisch Auch bekannt als فارسی
  • Filipino Auch bekannt als National Language of the Philippines, Standardized Tagalog
  • Finnisch auch bekannt als suomi, suomen kieli
  • Finanzielle Auch bekannt als finanzielle, numerische und technische Dokumente
  • Französisch auch bekannt als français, langue française
  • FrakturAlphabet Auch bekannt als Allgemeine Fraktur, kalligraphische Hand des lateinischen Alphabets
  • Fränkisch auch bekannt als Frenkisk, Altfränkisch
  • Mittelfranzösisch Auch bekannt als Moyen Français, Mittelfranzösisch(ca. 1400-1600 N. CHR)
  • Westfriesisch auch bekannt als Frysk
  • GeorgischesAlphabet Auch bekannt als ქართული
  • Schottisch-Gälisch auch bekannt als Gàidhlig
  • Irisch auch bekannt als Gaeilge
  • Galicisch auch bekannt als galego
  • Altgriechisch Auch bekannt als Ἑλληνική
  • GriechischesAlphabet Auch bekannt als ελληνικά
  • Gujarati auch bekannt als ગુજરાતી
  • GujaratiAlphabet Auch bekannt als ગુજરાતી
  • GurmukhiAlphabet auch bekannt als Gurmukhī, ਗੁਰਮੁਖੀ, Shahmukhi, گُرمُکھی, Sihk Script
  • HangulAlphabet auch bekannt als koreanisches Alphabet,한글,Hangeul,조선글,hosŏn'gŭl
  • HangulVerticalAlphabet auch bekannt als Koreanisches Alphabet,한글,Hangeul,조선글,hosŏn'gŭl
  • HanSimplifiedAlphabet auch bekannt als Samhan ,한어, 韓語
  • HanSimplifiedVerticalAlphabet auch bekannt als Samhan ,한어, 韓語
  • HanTraditionellesAlphabet Auch bekannt als Samhan ,한어, 韓語
  • HanTraditionellesVertikalesAlphabet auch bekannt als Samhan ,한어, 韓語
  • Haitianisch auch bekannt als Kreyòl ayisyen
  • Hebräisch Auch bekannt als עברית
  • HebräischesAlphabet Auch bekannt als עברית
  • Hindi auch bekannt als हिन्दी, हिंदी
  • Kroatisch auch bekannt als hrvatski jezik
  • Ungarisch auch bekannt als magyar
  • Armenisch Auch bekannt als Հայերեն
  • Inuktitut Auch bekannt als ᐃᓄᒃᑎᑐᑦ
  • Indonesisch auch bekannt als Bahasa Indonesia
  • Isländisch auch bekannt als Íslenska
  • Italienisch auch bekannt als italiano
  • ItalienischAlt auch bekannt als italiano
  • JapanischesAlphabet Auch bekannt als 日本語(にほんご)
  • JapanischesVertikalAlphabet Auch bekannt als 日本語(にほんご)
  • Javanisch auch bekannt als basa Jawa
  • Japanisch Auch bekannt als 日本語(にほんご)
  • JapanischVertikal Auch bekannt als 日本語(にほんご)
  • Kannada Auch bekannt als ಕನ್ನಡ
  • KannadaAlphabet Auch bekannt als ಕನ್ನಡ
  • Georgisch Auch bekannt als ქართული
  • GeorgianOld Auch bekannt als ქართული
  • Kasachisch Auch bekannt als қазақ тілі
  • Khmer Auch bekannt als ខ្មែរ, ខេមរភាសា, ភាសាខ្មែរ
  • KhmerAlphabet Auch bekannt als ខ្មែរ, ខេមរភាសា, ភាសាខ្មែរ
  • Kirgisisch Auch bekannt als Кыргызча, Кыргыз тили
  • Nordkurdisch Auch bekannt als Kurmandschi, کورمانجی ,Kurmancî
  • Koreanisch Auch bekannt als 한국어(韓國語), 조선어(朝鮮語)
  • KoreanVertical Auch bekannt als 한국어(韓國語), 조선어(朝鮮語)
  • Lao Auch bekannt als ພາສາລາວ
  • LaoAlphabet Auch bekannt als ພາສາລາວ
  • Latein auch bekannt als latine, lingua latina
  • LateinischesAlphabet Auch bekannt als latine, lingua latina
  • Lettisch auch bekannt als latviešu valoda
  • Litauisch auch bekannt als lietuvių kalba
  • Luxemburgisch auch bekannt als Lëtzebuergesch
  • Malayalam Auch bekannt als മലയാളം
  • MalayalamAlphabet auch bekannt als മലയാളം
  • Marathi Auch bekannt als मराठी
  • MICR auch bekannt als Magnetic Ink Character Recognition, MICR Cheque Encoding
  • Mazedonisch Auch bekannt als македонски јазик
  • Malteser auch bekannt als Malti
  • Mongolisch Auch bekannt als монгол
  • Maori auch bekannt als te reo Māori
  • Malaiisch Auch bekannt als bahasa Melayu, بهاس ملايو
  • Myanmar auch bekannt als Burmese ,ဗမာစာ
  • MyanmarAlphabet auch bekannt als Birmanisch ,ဗမာစာ
  • Nepali Auch bekannt als नेपाली
  • Niederländisch Auch bekannt als Nederlands, Vlaams
  • Norwegisch auch bekannt als Norsk
  • Okzitanisch auch bekannt als occitan, lenga d'òc
  • Oriya auch bekannt als ଓଡ଼ିଆ
  • OriyaAlphabet Auch bekannt als ଓଡ଼ିଆ
  • Panjabi auch bekannt als ਪੰਜਾਬੀ, پنجابی
  • Polnisch Auch bekannt als język polski, polszczyzna
  • Portugiesisch auch bekannt als português
  • Paschtu Auch bekannt als پښتو
  • Quechua auch bekannt als Runa Simi, Kichwa
  • Rumänisch Auch bekannt als limba română
  • Russisch Auch bekannt als русский язык
  • Sanskrit Auch bekannt als संस्कृतम्
  • Singhalesisch Auch bekannt als සිංහල
  • SinghalesischesAlphabet Auch bekannt als සිංහල
  • Slowakisch Auch bekannt als slovenčina, slovenský jazyk
  • SlovakFraktur auch bekannt als slovenčina, slovenský jazyk
  • Slowenisch auch bekannt als slovenski jezik, slovenščina
  • Sindhi auch bekannt als सिन्धी, سنڌي، سندھی
  • Spanisch auch bekannt als español, castellano
  • SpanischAlt auch bekannt als español, castellano
  • Albanisch auch bekannt als gjuha shqipe
  • Serbisch Auch bekannt als српски језик
  • SerbischLatein Auch bekannt als српски језик
  • Sundanese auch bekannt als Basa Sunda
  • Swahili auch bekannt als Kiswahili
  • Schwedisch auch bekannt als Svenska
  • Syrisch Auch bekannt als Syrisch, Syrisch-Aramäisch,ܠܫܢܐ ܣܘܪܝܝܐ, Leššānā Suryāyā
  • SyrischesAlphabet Auch bekannt als Syrisch, Syrisch-Aramäisch,ܠܫܢܐ ܣܘܪܝܝܐ, Leššānā Suryāyā
  • Tamil Auch bekannt als தமிழ்
  • TamilAlphabet Auch bekannt als தமிழ்
  • Tatar Auch bekannt als татар теле, tatar tele
  • Telugu auch bekannt als తెలుగు
  • TeluguAlphabet Auch bekannt als తెలుగు
  • Tadschikisch Auch bekannt als тоҷикӣ, toğikī, تاجیکی
  • Tagalog Auch bekannt als Wikang Tagalog, ᜏᜒᜃᜅ᜔ ᜆᜄᜎᜓᜄ᜔
  • Thai Auch bekannt als ไทย
  • ThaanaAlphabet auch bekannt als Taana , Tāna , ތާނަ
  • ThaiAlphabet Auch bekannt als ไทย
  • TibetischesAlphabet Auch bekannt als Tibetan Standard, Tibetan, Central ཡིག་
  • Tigrinya Auch bekannt als ትግርኛ
  • Tonga auch bekannt als faka Tonga
  • Türkisch auch bekannt als Türkçe
  • Uyghur auch bekannt als Uyƣurqə, ئۇيغۇرچە
  • Ukrainisch Auch bekannt als українська мова
  • Urdu Auch bekannt als اردو
  • Usbekisch Auch bekannt als O'zbek, Ўзбек, أۇزبېك
  • UsbekischKyrillisch Auch bekannt als O'zbek, Ўзбек, أۇزبېك
  • Vietnamesisch Auch bekannt als Tiếng Việt
  • VietnamesischesAlphabet Auch bekannt als Tiếng Việt
  • Jiddisch Auch bekannt als ייִדיש
  • Yoruba auch bekannt als Yorùbá

Beispiel: OCR auf Arabisch (+ viele weitere)

Im folgenden Beispiel wird gezeigt, wie man ein arabisches Dokument scannen kann.

PM> Install-Package IronOcr.Languages.Arabic
C# OCR in arabischer Sprache
:path=/static-assets/ocr/content-code-examples/tutorials/how-to-read-text-from-an-image-in-csharp-net-6.cs
// PM> Install IronOcr.Languages.Arabic
using IronOcr;

IronTesseract ocr = new IronTesseract();
ocr.Language = OcrLanguage.Arabic;

using OcrInput input = new OcrInput();
input.LoadImageFrame("img/arabic.gif", 1);
// 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");
' PM> Install IronOcr.Languages.Arabic
Imports IronOcr

Private ocr As New IronTesseract()
ocr.Language = OcrLanguage.Arabic

Using input As New OcrInput()
	input.LoadImageFrame("img/arabic.gif", 1)
	' 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
VB   C#

Beispiel: OCR in mehr als einer Sprache im selben Dokument.

Im folgenden Beispiel wird gezeigt, wie man mit OCR mehrere Sprachen in ein und dasselbe Dokument scannen kann.

Dies ist sehr häufig der Fall, wenn z. B. ein chinesisches Dokument englische Wörter und Urls enthalten kann.

PM> Install-Package IronOcr.Languages.ChineseSimplified
:path=/static-assets/ocr/content-code-examples/tutorials/how-to-read-text-from-an-image-in-csharp-net-7.cs
using IronOcr;

IronTesseract ocr = new IronTesseract();
ocr.Language = OcrLanguage.ChineseSimplified;

// We can add any number of languages.
ocr.AddSecondaryLanguage(OcrLanguage.English);
// Optionally add custom tesseract .traineddata files by specifying a file path

using OcrInput input = new OcrInput();
input.LoadImage("img/MultiLanguage.jpeg");
OcrResult result = ocr.Read(input);
result.SaveAsTextFile("MultiLanguage.txt");
Imports IronOcr

Private ocr As New IronTesseract()
ocr.Language = OcrLanguage.ChineseSimplified

' We can add any number of languages.
ocr.AddSecondaryLanguage(OcrLanguage.English)
' Optionally add custom tesseract .traineddata files by specifying a file path

Using input As New OcrInput()
	input.LoadImage("img/MultiLanguage.jpeg")
	Dim result As OcrResult = ocr.Read(input)
	result.SaveAsTextFile("MultiLanguage.txt")
End Using
VB   C#

Mehrseitige Dokumente

IronOCR kann mehrere Seiten / Bilder zu einem einzigen OcrResult kombinieren. Dies ist besonders nützlich, wenn ein Dokument aus mehreren Bildern erstellt wurde. Wir werden später sehen, dass diese spezielle Funktion von IronTesseract äußerst nützlich ist, um durchsuchbare PDFs und HTML-Dateien aus OCR-Eingaben zu erzeugen.

IronOCR ermöglicht es, Bilder, TIFF-Rahmen und PDF-Seiten in einer einzigen OCR-Eingabe zu mischen und anzupassen.

:path=/static-assets/ocr/content-code-examples/tutorials/how-to-read-text-from-an-image-in-csharp-net-8.cs
using IronOcr;

IronTesseract ocr = new IronTesseract();

using OcrInput input = new OcrInput();
input.LoadImage("image1.jpeg");
input.LoadImage("image2.png");
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames("image3.gif", pageindices);

OcrResult result = ocr.Read(input);

Console.WriteLine($"{result.Pages.Length} Pages"); // 3 Pages
Imports IronOcr

Private ocr As New IronTesseract()

Private OcrInput As using
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)

Console.WriteLine($"{result.Pages.Length} Pages") ' 3 Pages
VB   C#

Wir können auch problemlos jede Seite eines TIFFs OCRen.

:path=/static-assets/ocr/content-code-examples/tutorials/how-to-read-text-from-an-image-in-csharp-net-9.cs
using IronOcr;

IronTesseract ocr = new IronTesseract();

using OcrInput input = new OcrInput();
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames("MultiFrame.Tiff", pageindices);
OcrResult result = ocr.Read(input);

Console.WriteLine(result.Text);
Console.WriteLine($"{result.Pages.Length} Pages");
// 1 page for every frame (page) in the TIFF
Imports IronOcr

Private ocr As New IronTesseract()

Private OcrInput As using
Private pageindices = New Integer() { 1, 2 }
input.LoadImageFrames("MultiFrame.Tiff", pageindices)
Dim result As OcrResult = ocr.Read(input)

Console.WriteLine(result.Text)
Console.WriteLine($"{result.Pages.Length} Pages")
' 1 page for every frame (page) in the TIFF
VB   C#
:path=/static-assets/ocr/content-code-examples/tutorials/how-to-read-text-from-an-image-in-csharp-net-10.cs
using IronOcr;

IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
input.LoadPdf("example.pdf", Password: "password");
// We can also select specific PDF page numbers to OCR

OcrResult result = ocr.Read(input);

Console.WriteLine(result.Text);
Console.WriteLine($"{result.Pages.Length} Pages");
// 1 page for every page of the PDF
Imports IronOcr

Private ocr As New IronTesseract()
Private OcrInput As using
input.LoadPdf("example.pdf", Password:= "password")
' We can also select specific PDF page numbers to OCR

Dim result As OcrResult = ocr.Read(input)

Console.WriteLine(result.Text)
Console.WriteLine($"{result.Pages.Length} Pages")
' 1 page for every page of the PDF
VB   C#

Durchsuchbare PDFs

Der Export von OCR-Ergebnissen als durchsuchbare PDFs in C# und VB.NET ist eine beliebte Funktion von IronOCR. Dies kann Unternehmen und Behörden bei der Datenbankbevölkerung, der Suchmaschinenoptimierung und der PDF-Nutzbarkeit sehr helfen.

:path=/static-assets/ocr/content-code-examples/tutorials/how-to-read-text-from-an-image-in-csharp-net-11.cs
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");
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")
VB   C#

Ein weiterer OCR-Trick besteht darin, ein vorhandenes PDF-Dokument durchsuchbar zu machen.

:path=/static-assets/ocr/content-code-examples/tutorials/how-to-read-text-from-an-image-in-csharp-net-12.cs
using IronOcr;

IronTesseract ocr = new IronTesseract();

using OcrInput input = new OcrInput();
input.Title = "Pdf Metadata Name";
input.LoadPdf("example.pdf", Password: "password");
OcrResult result = ocr.Read(input);
result.SaveAsSearchablePdf("searchable.pdf");
Imports IronOcr

Private ocr As New IronTesseract()

Private OcrInput As using
input.Title = "Pdf Metadata Name"
input.LoadPdf("example.pdf", Password:= "password")
Dim result As OcrResult = ocr.Read(input)
result.SaveAsSearchablePdf("searchable.pdf")
VB   C#

Dasselbe gilt für die Konvertierung von TIFF-Dokumenten mit 1 oder mehr Seiten in durchsuchbare PDFs mit IronTesseract.

:path=/static-assets/ocr/content-code-examples/tutorials/how-to-read-text-from-an-image-in-csharp-net-13.cs
using IronOcr;

IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
input.Title = "Pdf Title";
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames("example.tiff", pageindices);
OcrResult result = ocr.Read(input);
result.SaveAsSearchablePdf("searchable.pdf");
Imports IronOcr

Private ocr As New IronTesseract()
Private OcrInput As using
input.Title = "Pdf Title"
Dim pageindices = New Integer() { 1, 2 }
input.LoadImageFrames("example.tiff", pageindices)
Dim result As OcrResult = ocr.Read(input)
result.SaveAsSearchablePdf("searchable.pdf")
VB   C#

Hocr HTML exportieren

Auf ähnliche Weise können wir OCR-Ergebnisdokumente in Hocr HTML exportieren. Dabei handelt es sich um ein XML-Dokument, das von einem XML-Reader geparst oder in visuell ansprechendes HTML umgewandelt werden kann.

Dies ermöglicht ein gewisses Maß an PDF zu HTML und TIFF zu HTML Konvertierung.

:path=/static-assets/ocr/content-code-examples/tutorials/how-to-read-text-from-an-image-in-csharp-net-14.cs
using IronOcr;

IronTesseract ocr = new IronTesseract();

using OcrInput input = new OcrInput();
input.Title = "Html Title";

// Add more content as required...
input.LoadImage("image2.jpeg");
input.LoadPdf("example.pdf",Password: "password");
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames("example.tiff", pageindices);

OcrResult result = ocr.Read(input);
result.SaveAsHocrFile("hocr.html");
Imports IronOcr

Private ocr As New IronTesseract()

Private OcrInput As using
input.Title = "Html Title"

' Add more content as required...
input.LoadImage("image2.jpeg")
input.LoadPdf("example.pdf",Password:= "password")
Dim pageindices = New Integer() { 1, 2 }
input.LoadImageFrames("example.tiff", pageindices)

Dim result As OcrResult = ocr.Read(input)
result.SaveAsHocrFile("hocr.html")
VB   C#

Lesen von Barcodes in OCR-Dokumenten

IronOCR hat gegenüber dem herkömmlichen Tesseract den zusätzlichen Vorteil, dass es auch Barcodes und QR-Codes lesen kann;

:path=/static-assets/ocr/content-code-examples/tutorials/how-to-read-text-from-an-image-in-csharp-net-15.cs
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)
{
    Console.WriteLine(barcode.Value);
    // type and location properties also exposed
}
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
		Console.WriteLine(barcode.Value)
		' type and location properties also exposed
	Next barcode
End Using
VB   C#

Ein detaillierter Blick auf die OCR-Ergebnisse für Bild und Text

Der letzte Punkt, den wir in diesem Tutorial betrachten, ist das OCR-Ergebnisobjekt. Wenn wir OCR lesen, wollen wir normalerweise nur den Text herauslesen, aber IronOCR enthält tatsächlich eine große Menge an Informationen, die für fortgeschrittene Entwickler von Nutzen sein können.

Innerhalb eines OCR-Ergebnisobjekts haben wir eine Sammlung von Seiten, die iteriert werden können. Auf jeder Seite können wir Strichcodes, Leistungsdiagramme, Textzeilen, Wörter und Zeichen finden.

Jedes dieser Objekte enthält nämlich: einen Ort; eine X-Koordinate; eine Y-Koordinate; eine Breite und eine Höhe; ein damit verbundenes Bild, das eingesehen werden kann; einen Schriftnamen; die Schriftgröße; die Richtung, in der der Text geschrieben wird; die Drehung des Textes; und die statistische Konfidenz, die IronOCR für dieses spezifische Wort, diese Zeile oder diesen Absatz hat.

Kurz gesagt, dies ermöglicht es Entwicklern, kreativ zu sein und mit OCR-Daten auf jede beliebige Weise zu arbeiten, um Informationen zu prüfen und zu exportieren.

Wir können auch mit jedem Element aus dem .NET OCR-Ergebnisobjekt arbeiten und es als Bild oder BitMap exportieren, z. B. einen Absatz, ein Wort oder einen Strichcode.

:path=/static-assets/ocr/content-code-examples/tutorials/how-to-read-text-from-an-image-in-csharp-net-16.cs
using IronOcr;
using IronSoftware.Drawing;

// We can delve deep into OCR results as an object model of Pages, Barcodes, Paragraphs, Lines, Words and Characters
// This allows us to explore, export and draw OCR content using other APIs

IronTesseract ocr = new IronTesseract();
ocr.Configuration.ReadBarCodes = true;

using OcrInput input = new OcrInput();
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames(@"img\Potter.tiff", pageindices);

OcrResult result = ocr.Read(input);

foreach (var page in result.Pages)
{
    // Page object
    int pageNumber = page.PageNumber;
    string pageText = page.Text;
    int pageWordCount = page.WordCount;

    // null if we don't set Ocr.Configuration.ReadBarCodes = true;
    OcrResult.Barcode[] barcodes = page.Barcodes;

    AnyBitmap pageImage = page.ToBitmap(input);
    System.Drawing.Bitmap pageImageLegacy = page.ToBitmap(input);
    double pageWidth = page.Width;
    double pageHeight = page.Height;

    foreach (var paragraph in page.Paragraphs)
    {
        // Pages -> Paragraphs
        int paragraphNumber = paragraph.ParagraphNumber;
        String paragraphText = paragraph.Text;
        System.Drawing.Bitmap paragraphImage = paragraph.ToBitmap(input);
        int paragraphXLocation = paragraph.X;
        int paragraphYLocation = paragraph.Y;
        int paragraphWidth = paragraph.Width;
        int paragraphHeight = paragraph.Height;
        double paragraphOcrAccuracy = paragraph.Confidence;
        var paragraphTextDirection = paragraph.TextDirection;

        foreach (var line in paragraph.Lines)
        {
            // Pages -> Paragraphs -> Lines
            int lineNumber = line.LineNumber;
            String lineText = line.Text;
            AnyBitmap lineImage = line.ToBitmap(input);
            System.Drawing.Bitmap lineImageLegacy = line.ToBitmap(input);
            int lineXLocation = line.X;
            int lineYLocation = line.Y;
            int lineWidth = line.Width;
            int lineHeight = line.Height;
            double lineOcrAccuracy = line.Confidence;
            double lineSkew = line.BaselineAngle;
            double lineOffset = line.BaselineOffset;

            foreach (var word in line.Words)
            {
                // Pages -> Paragraphs -> Lines -> Words
                int wordNumber = word.WordNumber;
                String wordText = word.Text;
                AnyBitmap wordImage = word.ToBitmap(input);
                System.Drawing.Image wordImageLegacy = word.ToBitmap(input);
                int wordXLocation = word.X;
                int wordYLocation = word.Y;
                int wordWidth = word.Width;
                int wordHeight = word.Height;
                double wordOcrAccuracy = word.Confidence;

                if (word.Font != null)
                {
                    // Word.Font is only set when using Tesseract Engine Modes rather than LTSM
                    String fontName = word.Font.FontName;
                    double fontSize = word.Font.FontSize;
                    bool isBold = word.Font.IsBold;
                    bool isFixedWidth = word.Font.IsFixedWidth;
                    bool isItalic = word.Font.IsItalic;
                    bool isSerif = word.Font.IsSerif;
                    bool isUnderlined = word.Font.IsUnderlined;
                    bool fontIsCaligraphic = word.Font.IsCaligraphic;
                }

                foreach (var character in word.Characters)
                {
                    // Pages -> Paragraphs -> Lines -> Words -> Characters
                    int characterNumber = character.CharacterNumber;
                    String characterText = character.Text;
                    AnyBitmap characterImage = character.ToBitmap(input);
                    System.Drawing.Bitmap characterImageLegacy = character.ToBitmap(input);
                    int characterXLocation = character.X;
                    int characterYLocation = character.Y;
                    int characterWidth = character.Width;
                    int characterHeight = character.Height;
                    double characterOcrAccuracy = character.Confidence;

                    // Output alternative symbols choices and their probability.
                    // Very useful for spell checking
                    OcrResult.Choice[] characterChoices = character.Choices;
                }
            }
        }
    }
}
Imports IronOcr
Imports IronSoftware.Drawing

' We can delve deep into OCR results as an object model of Pages, Barcodes, Paragraphs, Lines, Words and Characters
' This allows us to explore, export and draw OCR content using other APIs

Private ocr As New IronTesseract()
ocr.Configuration.ReadBarCodes = True

Using input As New OcrInput()
	Dim pageindices = New Integer() { 1, 2 }
	input.LoadImageFrames("img\Potter.tiff", pageindices)
	
	Dim result As OcrResult = ocr.Read(input)
	
	For Each page In result.Pages
		' Page object
		Dim pageNumber As Integer = page.PageNumber
		Dim pageText As String = page.Text
		Dim pageWordCount As Integer = page.WordCount
	
		' null if we don't set Ocr.Configuration.ReadBarCodes = true;
		Dim barcodes() As OcrResult.Barcode = page.Barcodes
	
		Dim pageImage As AnyBitmap = page.ToBitmap(input)
		Dim pageImageLegacy As System.Drawing.Bitmap = page.ToBitmap(input)
		Dim pageWidth As Double = page.Width
		Dim pageHeight As Double = page.Height
	
		For Each paragraph In page.Paragraphs
			' Pages -> Paragraphs
			Dim paragraphNumber As Integer = paragraph.ParagraphNumber
			Dim paragraphText As String = paragraph.Text
			Dim paragraphImage As System.Drawing.Bitmap = paragraph.ToBitmap(input)
			Dim paragraphXLocation As Integer = paragraph.X
			Dim paragraphYLocation As Integer = paragraph.Y
			Dim paragraphWidth As Integer = paragraph.Width
			Dim paragraphHeight As Integer = paragraph.Height
			Dim paragraphOcrAccuracy As Double = paragraph.Confidence
			Dim paragraphTextDirection = paragraph.TextDirection
	
			For Each line In paragraph.Lines
				' Pages -> Paragraphs -> Lines
				Dim lineNumber As Integer = line.LineNumber
				Dim lineText As String = line.Text
				Dim lineImage As AnyBitmap = line.ToBitmap(input)
				Dim lineImageLegacy As System.Drawing.Bitmap = line.ToBitmap(input)
				Dim lineXLocation As Integer = line.X
				Dim lineYLocation As Integer = line.Y
				Dim lineWidth As Integer = line.Width
				Dim lineHeight As Integer = line.Height
				Dim lineOcrAccuracy As Double = line.Confidence
				Dim lineSkew As Double = line.BaselineAngle
				Dim lineOffset As Double = line.BaselineOffset
	
				For Each word In line.Words
					' Pages -> Paragraphs -> Lines -> Words
					Dim wordNumber As Integer = word.WordNumber
					Dim wordText As String = word.Text
					Dim wordImage As AnyBitmap = word.ToBitmap(input)
					Dim wordImageLegacy As System.Drawing.Image = word.ToBitmap(input)
					Dim wordXLocation As Integer = word.X
					Dim wordYLocation As Integer = word.Y
					Dim wordWidth As Integer = word.Width
					Dim wordHeight As Integer = word.Height
					Dim wordOcrAccuracy As Double = word.Confidence
	
					If word.Font IsNot Nothing Then
						' Word.Font is only set when using Tesseract Engine Modes rather than LTSM
						Dim fontName As String = word.Font.FontName
						Dim fontSize As Double = word.Font.FontSize
						Dim isBold As Boolean = word.Font.IsBold
						Dim isFixedWidth As Boolean = word.Font.IsFixedWidth
						Dim isItalic As Boolean = word.Font.IsItalic
						Dim isSerif As Boolean = word.Font.IsSerif
						Dim isUnderlined As Boolean = word.Font.IsUnderlined
						Dim fontIsCaligraphic As Boolean = word.Font.IsCaligraphic
					End If
	
					For Each character In word.Characters
						' Pages -> Paragraphs -> Lines -> Words -> Characters
						Dim characterNumber As Integer = character.CharacterNumber
						Dim characterText As String = character.Text
						Dim characterImage As AnyBitmap = character.ToBitmap(input)
						Dim characterImageLegacy As System.Drawing.Bitmap = character.ToBitmap(input)
						Dim characterXLocation As Integer = character.X
						Dim characterYLocation As Integer = character.Y
						Dim characterWidth As Integer = character.Width
						Dim characterHeight As Integer = character.Height
						Dim characterOcrAccuracy As Double = character.Confidence
	
						' Output alternative symbols choices and their probability.
						' Very useful for spell checking
						Dim characterChoices() As OcrResult.Choice = character.Choices
					Next character
				Next word
			Next line
		Next paragraph
	Next page
End Using
VB   C#

Zusammenfassung

IronOCR bietet C#-Entwicklern die fortschrittlichstenTesseract-API die wir kennen, auf jeder Plattform.

IronOCR kann auf Windows, Linux, Mac, Azure, AWS und Lambda eingesetzt werden und unterstützt sowohl .NET Framework Projekte als auch .NET Standard und .NET Core.

Wir sehen, dass IronOCR selbst bei der Eingabe eines unvollkommenen Dokuments dessen Inhalt mit einer statistischen Genauigkeit von etwa 99 % lesen kann, obwohl das Dokument schlecht formatiert, verzerrt und mit digitalem Rauschen versehen war.

Wir können auch Barcodes in OCR-Scans lesen und unsere OCR sogar als HTML und durchsuchbare PDFs exportieren.

Dies ist ein Alleinstellungsmerkmal von IronOCR und eine Funktion, die Sie in Standard-OCR-Bibliotheken oder Tesseract nicht finden werden.

Vorwärts bewegen

Wenn Sie mehr über IronOCR erfahren möchten, empfehlen wir Ihnen, dies zu tun:

Quellcode Download