Lesen von Text aus Bildern mit C# OCR
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 Image to 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 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.
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 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)
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, 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)
Wir können dies sogar bei einem Scan mittlerer Qualität mit 100%iger Genauigkeit anwenden.
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
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)
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
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.
: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 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
: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 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")
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 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:
- Beginnen Sie mit der Nutzung unsererC# Tesseract OCR Schnellstart leitfaden.
- Erforschen Sie dieC# & VB Code Beispiele
- Lesen Sie den ausführlichenMSDN-ähnliche API-Referenz.
Quellcode Download
- Github-Repository
Vielleicht gefallen Ihnen auch die anderen .NET OCR-Tutorials in diesem Abschnitt.