Text aus Bildern mit C# OCR lesen
In diesem Tutorial lernen wir, wie man Bilder in C# und andere .NET-Sprachen in Text konvertiert.
Wie man Bilder in C# in Text umwandelt
- Laden Sie die OCR Bild-zu-Text IronOCR Bibliothek herunter
- Anpassen von Ausschnittbereichen zum Lesen von Teilen eines Bildes
- Nutzen Sie bis zu 125 internationale Sprachen über Language Packs
- OCR-Scanergebnisse als Text oder durchsuchbares PDF exportieren
Lesen von Text aus Bildern in .NET-Anwendungen
Wir werden die IronOcr.IronTesseract
-Klasse verwenden, um Text in Bildern zu erkennen, und die Nuancen der Nutzung 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.
Um dies zu tun, laden wir die IronOcr DLL herunter 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.
- Nutzt die 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.
Beginnen Sie noch heute mit der Verwendung von IronOCR in Ihrem Projekt mit einer kostenlosen Testversion.
Verwendung von Tesseract in C##
In diesem einfachen Beispiel sehen Sie, dass wir die Klasse IronOcr.IronTesseract
verwenden, um den Text aus einem Bild zu lesen und automatisch seinen Wert als Zeichenfolge 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)
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.

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 Ihnen, die Klassen OcrInput
und IronTesseract
im IronOcr
-Namensraum zu verwenden.
OcrInput bietet Ihnen die Möglichkeit, die spezifischen Eigenschaften eines OCR-Auftrags festzulegen, wie zum Beispiel:
- 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)
Wir können dies sogar bei einem Scan mittlerer Qualität mit 100%iger Genauigkeit anwenden.

Wie Sie sehen können, war das Lesen des Textes (und optional von Barcodes) aus einem gescannten Bild wie einem TIFF relativ einfach.
Dieser OCR-Job liefert 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 beispielsweise TIFFs, und sogar automatisch Text aus PDF-Dokumenten extrahieren kann.
Beispiel: Ein Scan von geringer Qualität

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 zeigt sich die wahre Stärke von IronOCR im Vergleich zu anderen OCR-Bibliotheken wie Tesseract, und wir werden feststellen, dass andere OCR-Projekte davor zurückschrecken, dies 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)
Ohne die Methode Input.Deskew()
zum Begradigen des Bildes hinzuzufügen, erreichen wir eine Genauigkeit von 52,5 %. Nicht gut genug.
Das Hinzufügen von Input.Deskew()
bringt uns auf eine 99,8% Genauigkeit, die fast so genau ist wie das OCR eines qualitativ 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 zur Nutzung.- 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 unvollkommener Dokumente glänzt (obwohl dies zeitaufwendig ist und dazu führt, dass Ihre OCR-Aufgaben mehr CPU-Zyklen verbrauchen).
Wenn möglich, können Sie durch die Wahl von Eingabe-Bildformaten mit weniger digitalem Rauschen, wie beispielsweise TIFF oder PNG, auch schnellere Ergebnisse erzielen als bei verlustbehafteten Bildformaten wie JPEG.
Bild-Filter
Die folgenden Bildfilter können die Leistung deutlich verbessern:
- OcrInput.Rotate( double degrees) - Dreht Bilder um eine Anzahl von Grad im Uhrzeigersinn. Für gegen den Uhrzeigersinn verwenden Sie negative Zahlen.
- OcrInput.Binarize() - Dieser Bildfilter macht jeden Pixel schwarz oder weiß, ohne Zwischentöne. Kann die OCR-Leistung in Fällen mit sehr geringem Kontrast zwischen Text und Hintergrund verbessern.
- OcrInput.ToGrayScale() - Dieser Bildfilter wandelt jeden Pixel in einen Grauton um. 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 erwartet wird.
- OcrInput.Invert() - Kehrt jede Farbe um. Z. B. Weiß wird schwarz: Schwarz wird weiß.
- OcrInput.Dilate() - Erweiterte Morphologie. mit Dilatation werden Pixel zu den Grenzen von Objekten in einem Bild hinzugefügt. Gegenüber von Erode
- OcrInput.Erode() - Fortgeschrittene Morphologie. Erosion entfernt Pixel an ObjektgrenzenGegenstück von Dilate
- OcrInput.Deskew() - Dreht ein Bild, damit es richtig ausgerichtet 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() - Starke Entfernung von Hintergrundgeräuschen. 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 minderwertigen Bildern. 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
Dieses Ergebnis ist 99,8% genau im Vergleich zu einer Basislinie von 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 ein System.Drawing.Rectangle
verwenden, um in Pixeln den genauen Bereich eines Bildes anzugeben, der gelesen werden soll.
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 ein System.Drawing.Rectangle
verwenden, um eine Region festzulegen, in der 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.


: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)
Dies ergibt eine 41% Geschwindigkeitssteigerung - und ermöglicht uns, spezifisch 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-Zuschneiden) wird beim Lesen von PDFs ebenfalls unterstützt.
Internationale Sprachen
IronOCR unterstützt 125 internationale Sprachen über Sprachpakete, die als DLLs verteilt werden und von dieser Website oder auch vom NuGet-Paketmanager für Visual Studio heruntergeladen werden können.
Wir können sie installieren, indem wir NuGet durchsuchen (nach "IronOcr.Languages" suchen) oder von der OCR-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
- ChinesischVereinfacht 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
- Mittelalterliches Französisch Auch bekannt als Moyen Français, Mittelalterliches Französisch (ca. 1400-1600 AD)
- 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
- Japanisches Alphabet Auch bekannt als 日本語 (にほんご)
- JapaneseVerticalAlphabet Auch bekannt als 日本語 (にほんご)
- Javanisch auch bekannt als basa Jawa
- Japanisch Auch bekannt als 日本語 (にほんご)
- JapaneseVertical 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î
- Korean (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

: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
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
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
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
: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
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")
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")
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")
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 eine gewisse 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")
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
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
Zusammenfassung
IronOCR bietet C#-Entwicklern die fortschrittlichste Tesseract API, die wir auf jeder Plattform kennen.
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:
- Beginnen Sie mit der Verwendung unseres C# Tesseract OCR Schnellstart-Leitfadens.
- Erkunden Sie die C#- und VB-Codebeispiele
- Lesen Sie die ausführliche MSDN-ähnliche API-Referenz.
Quellcode Download
- Github Repository
-
Vielleicht gefallen Ihnen auch die anderen .NET OCR-Tutorials in diesem Abschnitt.