Wie man Fotos mit IronOCR liest

16. Februar 2025
Aktualisiert 16. Februar 2025
Teilen Sie:
This article was translated from English: Does it need improvement?
Translated
View the article in English

Beim Umgang mit großen Mengen von Dokumenten, insbesondere gescannten Bildern wie TIFF-Dateien, kann das manuelle Extrahieren von Text zeitaufwändig und fehleranfällig sein. Hier kommt die Optische Zeichenerkennung (OCR) ins Spiel, die eine automatisierte Methode bietet, um Text aus Bildern genau in digitale Daten umzuwandeln. OCR-Technologie kann die Komplexität von Bildern, wie gescannten Dokumenten oder Fotografien, verarbeiten und sie in durchsuchbaren, bearbeitbaren Text umwandeln. Dies beschleunigt nicht nur die Dokumentenverarbeitung, sondern sorgt auch für eine genauere Datenauswertung im Vergleich zur manuellen Transkription.

Durch die Verwendung von OCR für Formate wie TIFF, die aufgrund ihrer Größe, Farbtiefe oder Kompression schwer zu lesen sein können, können Unternehmen und Entwickler schnell große Mengen an Daten digitalisieren und verwalten. Mit OCR-Lösungen wie der ReadPhoto-Funktion von IronOCR können Entwickler Text aus Bildern extrahieren und sogar erweiterte Operationen wie das Suchen nach Schlüsselwörtern oder das Konvertieren gescannter Daten in durchsuchbare PDFs durchführen. Diese Technologie ist besonders nützlich für Branchen, die mit juristischen Dokumenten, Archiven oder Quittungen umgehen, bei denen eine effiziente Datenabfrage entscheidend ist.

In diesem Tutorial werden wir kurz ein Beispiel dafür geben, wie man ReadPhoto verwendet und wie man das Ergebnisobjekt manipuliert. Sowie Szenarien, in denen Entwickler ReadPhoto anstelle des standardmäßigen Read von IronOCR verwenden würden.

Beginnen Sie noch heute mit der Verwendung von IronOCR in Ihrem Projekt mit einer kostenlosen Testversion.

Erster Schritt:
green arrow pointer

Um diese Funktion zu nutzen, müssen Sie auch das IronOcr.Extension.AdvancedScan-Paket installieren.

Beispiel für Fotoauslesen

Das Lesen von hochwertigen Fotoformaten wie tiff und gif ist mit IronOCR relativ einfach. Zuerst erstellen wir eine neue Variable und weisen sie als OcrInput zu, dann laden wir das Bild mit LoadImageFrame. Schließlich verwenden wir die ReadPhoto-Methode und erhalten die Ergebnisse.

Bitte beachten Sie

  • Da Tiff mehrere Rahmen innerhalb eines einzelnen Bildes enthält, wird der Parameter frameNumber benötigt. Darüber hinaus beginnt der Index bei 0 statt bei 1.
  • Die Methode funktioniert derzeit nur für Englisch, Chinesisch, Japanisch, Koreanisch und das lateinische Alphabet.
  • Die Verwendung des erweiterten Scans im .NET-Framework setzt voraus, dass das Projekt auf einer x64-Architektur läuft.

Eingabe

Da die meisten Browser das TIFF-Format nicht nativ unterstützen, können Sie die TIFF-Datei hier herunterladen. Um die TIFF-Datei anzuzeigen, werde ich sie in WEBP konvertieren.

Eingabe

Code

:path=/static-assets/ocr/content-code-examples/how-to/read-photo-read-photo.cs
using IronOcr;
using IronSoftware.Drawing;
using System;

// Instantiate OCR engine
var ocr = new IronTesseract();

using var inputPhoto = new OcrInput();
inputPhoto.LoadImageFrame("ocr.tiff", 0);

// Read photo
OcrPhotoResult result = ocr.ReadPhoto(inputPhoto);

// Index number refer to region order in the page
int number = result.TextRegions[0].FrameNumber;

// Extract the text in the first region
string textinregion = result.TextRegions[0].TextInRegion;

//Extract the co_ordinates of the first text region
Rectangle region = result.TextRegions[0].Region;

var output = $"Text in First Region: {textinregion}\n"
             + $"Text Region:\n"
             + $"Starting X: {region.X}\n"
             + $"Starting Y: {region.Y}\n"
             + $"Region Width: {region.Width}\n"
             + $"Region Height: {region.Height}\n"
             + $"Result Confidence: {result.Confidence}\n\n"
             + $"Full Scnned Photo Text: {result.Text}";

Console.WriteLine(output);
Imports Microsoft.VisualBasic
Imports IronOcr
Imports IronSoftware.Drawing
Imports System

' Instantiate OCR engine
Private ocr = New IronTesseract()

Private inputPhoto = New OcrInput()
inputPhoto.LoadImageFrame("ocr.tiff", 0)

' Read photo
Dim result As OcrPhotoResult = ocr.ReadPhoto(inputPhoto)

' Index number refer to region order in the page
Dim number As Integer = result.TextRegions(0).FrameNumber

' Extract the text in the first region
Dim textinregion As String = result.TextRegions(0).TextInRegion

'Extract the co_ordinates of the first text region
Dim region As Rectangle = result.TextRegions(0).Region

Dim output = $"Text in First Region: {textinregion}" & vbLf & $"Text Region:" & vbLf & $"Starting X: {region.X}" & vbLf & $"Starting Y: {region.Y}" & vbLf & $"Region Width: {region.Width}" & vbLf & $"Region Height: {region.Height}" & vbLf & $"Result Confidence: {result.Confidence}" & vbLf & vbLf & $"Full Scnned Photo Text: {result.Text}"

Console.WriteLine(output)
$vbLabelText   $csharpLabel

Ausgabe

Ausgabe

Text: Der extrahierte Text aus OCR-Eingabe.

Vertrauen: Eine "double"-Eigenschaft, die das statistische Genauigkeitsvertrauen eines Durchschnitts aller Zeichen angibt, wobei eins die höchste und null die niedrigste ist.

TextRegions: Eine Liste der Eigenschaft "TextRegions", die angibt, wo sich der OCR-Text und dessen Position innerhalb der Eingabe befindet. Im obigen Beispiel haben wir die Rahmennummer sowie das Rechteck, das den Text enthält, ausgegeben.


Unterschied zwischen ReadPhoto und Read

Der Hauptunterschied zwischen dieser readPhoto-Methode im Vergleich zur Standard-read Methode ist das Ergebnisobjekt und das Dateiformat, das sie verwendet. LoadImageFrame nimmt speziell nur tiff und gif an und akzeptiert keine Formate wie Jpeg. Dafür gibt es einige Gründe.

Vergleich zwischen Tiff- und Jpg-Bildern

Tiff als Dateiformat ist verlustfrei und wird normalerweise verwendet, um mehrere Seiten und mehrere Rahmen in ein einziges Format zu verdichten. Es wird typischerweise für hochqualitative, multi-Bildspeicherung verwendet (zum Beispiel Rechtsdokumente, medizinische Bilder). Es ist weitaus komplexer als Standard-JPG-Formate und erfordert daher eine andere Methode, um den Text vollständig daraus zu extrahieren.

Außerdem verwenden Tiff-Bilder nur eine andere Kompression, sodass IronOCR eine spezialisierte Methode verwenden muss, um den Text zu entschlüsseln.

Hier ist eine weitere Aufschlüsselung zwischen TIFF und JPG im Vergleich.

FeatureTIFF (Tagged Image File Format)JPG/JPEG (Joint Photographic Experts Group)
CompressionLossless or uncompressed (preserves quality)Lossy compression (reduces quality for smaller file size)
File SizeLarge (due to high quality and optional lack of compression)Smaller, optimized for web use and fast loading
Image QualityHigh (ideal for professional use, retains all details)Lower (due to lossy compression, some quality is sacrificed)
Color DepthSupports high color depth (up to 16-bit or 32-bit per channel)24-bit color (16.7 million colors)
Use CaseProfessional photography, publishing, scanning, archivingWeb images, social media, everyday photos
TransparencySupports transparency and alpha channelsDoes not support transparency
EditingGood for multiple edits (no quality loss with resaving)Quality degrades with repeated edits and saves
CompatibilityWidely supported in professional softwareUniversally supported across all platforms and devices
AnimationDoes not support animationDoes not support animation
MetadataStores extensive metadata (EXIF, layers, etc.)Stores EXIF metadata but is more limited

Verschiedene Szenarien

Entwickler müssen jeden Anwendungsfall in der Produktion berücksichtigen, um ihre Anwendungen weiter zu optimieren und effektiv laufen zu lassen. Obwohl readPhoto für komplexe Bilder wie Tiff wie oben geeignet ist, würde das Ergebnis langsam verarbeitet werden. Andererseits könnte jpg von geringerer Qualität sein, aber der Vorgang wäre in der Regel schneller. Allerdings würde eine schlechte Bildqualität wie das Vorhandensein von Rauschen zu einer geringen Zuverlässigkeit bei der Texterkennung (OCR) führen.

Die Verwendung der confidence-Eigenschaft in den OcrPhotoResults oder einer beliebigen Klasse, die das Interface IOcrResult verwendet, gibt Ihnen einen Eindruck davon, wie genau die Ergebnisse sind, was Entwicklern ermöglicht, zu testen, zu iterieren und nach Bedarf zu optimieren.

Entwickler sollten eine feine Linie zwischen Effizienz und Genauigkeit finden, um sicherzustellen, dass die Bilder einem bestimmten Konsistenzschwellenwert entsprechen.