Lesen aus Datenströmen in C# für OCR
IronOCR liest Bilddaten direkt aus Streams in C#, indem der Stream an die OcrInput oder OcrImageInput Konstruktoren übergeben wird, wodurch eine effiziente OCR-Verarbeitung ohne Speichern von Dateien auf der Festplatte ermöglicht wird.
Ein Stream ist ein kontinuierlicher Fluss von binären Informationen, der gelesen oder geschrieben werden kann. In der Programmierung verarbeiten Streams effizient Daten, die zu groß für den Speicher sind, indem sie in überschaubare Teile zerlegt werden.
Die Importmethoden von IronOCR akzeptieren Bilddatenströme direkt. Übergeben Sie die Streamdaten an eine Importmethode, die alle notwendigen Schritte automatisch durchführt. Für fortgeschrittene Szenarien erkunden Sie die OcrInput Klasse, die umfangreiche Optionen zur Vorbereitung verschiedener Eingabeformate bietet.
Schnellstart: Verwenden Sie einen Stream für OCR-Eingaben in Sekunden
Dieses Beispiel demonstriert eine sofortige OCR, indem eine System.IO.Stream an IronOCR übergeben wird. Dadurch werden Dateipfade umgangen und erkanntes Textmaterial mit minimalem Code erfasst.
-
Installieren Sie IronOCR mit NuGet Package Manager
-
Kopieren Sie diesen Codeausschnitt und führen Sie ihn aus.
using var input = new IronOcr.OcrInput(stream); var result = new IronOcr.IronTesseract().Read(input); -
Bereitstellen zum Testen in Ihrer Live-Umgebung
Beginnen Sie noch heute, IronOCR in Ihrem Projekt zu verwenden, mit einer kostenlosen Testversion
Minimaler Arbeitsablauf (5 Schritte)
- Herunterladen einer C#-Bibliothek zum Lesen von Streams
- Erhalten und bereiten Sie die Bildstream-Daten vor
- Übergeben Sie den Bildstrom an den OcrImageInput-Konstruktor, um das Bild zu importieren
- Verwenden Sie die Methode
Lesen, um OCR durchzuführen - Definieren Sie den Lesebereich, indem Sie das Beschnittrechteck angeben
Wie lese ich Datenströme mit IronOCR?
Zuerst instanziieren Sie die IronTesseract Klasse, um OCR durchzuführen. Verwenden Sie die FromFile Methode von AnyBitmap, um die Bilddatei zu importieren. Dieses AnyBitmap Objekt konvertiert die Bilddaten in einen Stream. Verwenden Sie als Nächstes die using Anweisung, um das OcrImageInput Objekt zu erstellen, indem Sie den Bildstream mit der GetStream Methode übergeben. Verwenden Sie schließlich die Read Methode, um OCR durchzuführen.
:path=/static-assets/ocr/content-code-examples/how-to/input-streams-read-streams.cs
using IronOcr;
using IronSoftware.Drawing;
// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();
// Read image file to AnyBitmap
AnyBitmap anyBitmap = AnyBitmap.FromFile("Potter.tiff");
// Import image stream
using var imageInput = new OcrImageInput(anyBitmap.GetStream());
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);
Imports IronOcr
Imports IronSoftware.Drawing
' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()
' Read image file to AnyBitmap
Private anyBitmap As AnyBitmap = AnyBitmap.FromFile("Potter.tiff")
' Import image stream
Private imageInput = New OcrImageInput(anyBitmap.GetStream())
' Perform OCR
Private ocrResult As OcrResult = ocrTesseract.Read(imageInput)
Stream-basierte OCR kommt Webanwendungen zugute, die Bild-Uploads empfangen, Bilder aus Datenbanken verarbeiten oder temporäre Daten verarbeiten, die nicht auf die Festplatte geschrieben werden sollen. Der Stream-Ansatz integriert sich nahtlos mit System.Drawing Objekten und anderen Bildbearbeitungsbibliotheken.
Warum Streams für OCR verwenden?
Die Arbeit mit Streams bietet mehrere Vorteile for .NET-Entwickler:
- Speichereffizienz: Verarbeiten Sie Daten in Stücken, anstatt ganze Dateien in den Speicher zu laden
- Sicherheit: Verarbeiten Sie vertrauliche Dokumente, ohne temporäre Dateien auf der Festplatte zu erstellen
- Leistung: Beseitigen Sie E/A-Overhead durch Dateisystemoperationen
- Flexibilität: Arbeiten Sie mit Web-Uploads, Datenbank-BLOBs und In-Memory-Transformationen
Für die Verarbeitung mehrseitiger Dokumente oder die Verarbeitung von PDF-Streams behält IronOCR die gleiche einfache API bei und bietet eine robuste Leistung. Wenn Sie mit gescannten Dokumenten arbeiten, können Sie auch die Fähigkeiten von IronOCR nutzen, um gescannte Dokumente effizient durch Stream Processing zu lesen.
Wie kann ich einen Scanbereich für Stream OCR festlegen?
Um die Leistung bei großen Bildern zu verbessern und spezifische Auslesungen aus bestimmten Regionen zu erhalten, nutzen Sie die CropRectangle Klasse. Der OcrImageInput Konstruktor akzeptiert ein CropRectangle Objekt als zweiten Parameter, wodurch Sie angeben können, welcher Bereich des Bilddokuments gelesen werden soll. Das folgende Codebeispiel legt fest, dass nur die Kapitelnummer und der Titelbereich gelesen werden sollen.
:path=/static-assets/ocr/content-code-examples/how-to/input-streams-read-specific-region.cs
using IronOcr;
using IronSoftware.Drawing;
using System;
// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();
// Read image file to AnyBitmap
AnyBitmap anyBitmap = AnyBitmap.FromFile("Potter.tiff");
// Specify crop region
Rectangle scanRegion = new Rectangle(800, 200, 900, 400);
// Add image
using var imageInput = new OcrImageInput(anyBitmap.GetStream(), ContentArea: scanRegion);
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);
// Output the result to console
Console.WriteLine(ocrResult.Text);
Imports IronOcr
Imports IronSoftware.Drawing
Imports System
' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()
' Read image file to AnyBitmap
Private anyBitmap As AnyBitmap = AnyBitmap.FromFile("Potter.tiff")
' Specify crop region
Private scanRegion As New Rectangle(800, 200, 900, 400)
' Add image
Private imageInput = New OcrImageInput(anyBitmap.GetStream(), ContentArea:= scanRegion)
' Perform OCR
Private ocrResult As OcrResult = ocrTesseract.Read(imageInput)
' Output the result to console
Console.WriteLine(ocrResult.Text)
Diese Technik ist besonders nützlich, wenn Sie einen bestimmten Bereich eines Bildes OCR oder strukturierte Dokumente übersetzen müssen, in denen Text an vorhersehbaren Stellen erscheint. Für komplexere Szenarien, die Tabellen oder strukturierte Daten beinhalten, erfahren Sie, wie man Tabellen in Dokumenten liest.
Wie sieht der Scanbereich in der Ausgabe aus?
Welche fortgeschrittenen Stream-Verarbeitungstechniken kann ich verwenden?
Bei der Arbeit mit Streams sollten Sie zusätzliche IronOCR-Funktionen nutzen, um die Erkennungsgenauigkeit zu verbessern. Die Bildoptimierungsfilter können vor der OCR-Verarbeitung direkt auf Streamdaten angewendet werden:
using IronOcr;
using IronSoftware.Drawing;
using System.IO;
// Process stream with filters
public string ProcessStreamWithFilters(Stream imageStream)
{
IronTesseract ocrTesseract = new IronTesseract();
// Configure for better accuracy
ocrTesseract.Configuration.BlackListCharacters = "~`$#^*_}{][|\\";
ocrTesseract.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;
using var input = new OcrImageInput(imageStream);
// Apply preprocessing filters
input.Deskew();
input.DeNoise();
input.Sharpen();
var result = ocrTesseract.Read(input);
return result.Text;
}
using IronOcr;
using IronSoftware.Drawing;
using System.IO;
// Process stream with filters
public string ProcessStreamWithFilters(Stream imageStream)
{
IronTesseract ocrTesseract = new IronTesseract();
// Configure for better accuracy
ocrTesseract.Configuration.BlackListCharacters = "~`$#^*_}{][|\\";
ocrTesseract.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;
using var input = new OcrImageInput(imageStream);
// Apply preprocessing filters
input.Deskew();
input.DeNoise();
input.Sharpen();
var result = ocrTesseract.Read(input);
return result.Text;
}
Imports IronOcr
Imports IronSoftware.Drawing
Imports System.IO
' Process stream with filters
Public Function ProcessStreamWithFilters(imageStream As Stream) As String
Dim ocrTesseract As New IronTesseract()
' Configure for better accuracy
ocrTesseract.Configuration.BlackListCharacters = "~`$#^*_}{][|\"
ocrTesseract.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd
Using input As New OcrImageInput(imageStream)
' Apply preprocessing filters
input.Deskew()
input.DeNoise()
input.Sharpen()
Dim result = ocrTesseract.Read(input)
Return result.Text
End Using
End Function
Für eine verbesserte Bildverarbeitung sollten Sie den Filter-Assistenten verwenden, um automatisch die besten Vorverarbeitungsschritte für Ihre spezifischen Dokumenttypen zu bestimmen. Darüber hinaus kann die Funktion Bildausrichtung korrigieren die OCR-Genauigkeit bei gedrehten oder schiefen Bildern in Ihren Datenströmen erheblich verbessern.
Wie arbeite ich mit verschiedenen Stream-Quellen?
IronOCR verarbeitet verschiedene Stream-Quellen nahtlos. Ob es um die Verarbeitung von Uploads aus einem Webformular, das Abrufen von Bildern aus einer Datenbank oder die Konvertierung zwischen Formaten geht, die API bleibt konsistent:
// From MemoryStream
byte[] imageBytes = GetImageBytesFromDatabase();
using var memoryStream = new MemoryStream(imageBytes);
using var input = new OcrImageInput(memoryStream);
// From FileStream
using var fileStream = new FileStream("document.png", FileMode.Open);
using var input2 = new OcrImageInput(fileStream);
// From network stream
using var webClient = new WebClient();
using var networkStream = webClient.OpenRead("https://example.com/image.jpg");
using var input3 = new OcrImageInput(networkStream);
// From MemoryStream
byte[] imageBytes = GetImageBytesFromDatabase();
using var memoryStream = new MemoryStream(imageBytes);
using var input = new OcrImageInput(memoryStream);
// From FileStream
using var fileStream = new FileStream("document.png", FileMode.Open);
using var input2 = new OcrImageInput(fileStream);
// From network stream
using var webClient = new WebClient();
using var networkStream = webClient.OpenRead("https://example.com/image.jpg");
using var input3 = new OcrImageInput(networkStream);
Imports System.IO
Imports System.Net
' From MemoryStream
Dim imageBytes As Byte() = GetImageBytesFromDatabase()
Using memoryStream As New MemoryStream(imageBytes)
Using input As New OcrImageInput(memoryStream)
' Process input
End Using
End Using
' From FileStream
Using fileStream As New FileStream("document.png", FileMode.Open)
Using input2 As New OcrImageInput(fileStream)
' Process input2
End Using
End Using
' From network stream
Using webClient As New WebClient()
Using networkStream As Stream = webClient.OpenRead("https://example.com/image.jpg")
Using input3 As New OcrImageInput(networkStream)
' Process input3
End Using
End Using
End Using
Um optimale Ergebnisse zu erzielen, sollten Sie die DPI-Einstellungen anpassen, wenn Sie mit niedrig aufgelösten Streams arbeiten. IronOCR führt die DPI-Erkennung automatisch durch, aber eine manuelle Konfiguration kann die Genauigkeit für bestimmte Anwendungsfälle verbessern. Wenn Sie mit mehrseitigen Dokumenten arbeiten, sollten Sie den Umgang mit mehrseitigen TIFF- und GIF-Dateien durch Stream Processing erkunden.
Wie behandle ich OCR-Ergebnisse aus Datenströmen?
Nach der Verarbeitung Ihres Datenstroms liefert IronOCR umfangreiche Ergebnisobjekte, die über eine einfache Textextraktion hinausgehen. Die OcrResult Klasse enthält detaillierte Informationen über erkannte Texte, einschließlich Vertrauenswerten, Positionierung und Struktur:
:path=/static-assets/ocr/content-code-examples/how-to/input-streams-6.cs
// Process stream and analyze results
using var input = new OcrImageInput(stream);
var result = new IronTesseract().Read(input);
// Access detailed results
foreach (var page in result.Pages)
{
Console.WriteLine($"Page {page.PageNumber} Confidence: {page.Confidence}%");
foreach (var paragraph in page.Paragraphs)
{
Console.WriteLine($"Paragraph: {paragraph.Text}");
Console.WriteLine($"Location: X={paragraph.X}, Y={paragraph.Y}");
}
}
// Export results
string text = result.Text;
string searchablePdf = result.SaveAsSearchablePdf("output.pdf");
string hocrHtml = result.SaveAsHocrFile("output.html");
Imports IronOcr
' Process stream and analyze results
Using input As New OcrImageInput(stream)
Dim result = New IronTesseract().Read(input)
' Access detailed results
For Each page In result.Pages
Console.WriteLine($"Page {page.PageNumber} Confidence: {page.Confidence}%")
For Each paragraph In page.Paragraphs
Console.WriteLine($"Paragraph: {paragraph.Text}")
Console.WriteLine($"Location: X={paragraph.X}, Y={paragraph.Y}")
Next
Next
' Export results
Dim text As String = result.Text
Dim searchablePdf As String = result.SaveAsSearchablePdf("output.pdf")
Dim hocrHtml As String = result.SaveAsHocrFile("output.html")
End Using
Das Ergebnisobjekt bietet auch Methoden für den Export in durchsuchbare PDFs oder das hOCR-HTML-Format, wodurch die Erstellung durchsuchbarer Dokumentenarchive aus Ihren Stream-Eingaben erleichtert wird. Zu Debugging-Zwecken können Sie die Highlight-Texte-Funktion verwenden, um zu visualisieren, was IronOCR in Ihren Bildern entdeckt hat.
Welche Leistungsaspekte sollte ich kennen?
Wenn Sie mehrere Datenströme verarbeiten oder OCR-Lösungen mit hohem Durchsatz implementieren, sollten Sie diese Optimierungsstrategien berücksichtigen:
IronTesseractInstanzen wiederverwenden: Erstellen Sie eine einzelne Instanz und verwenden Sie sie für mehrere Operationen wieder- Fortschrittsverfolgung implementieren: Für große Streams verwenden Sie die Fortschrittsverfolgung, um den Verarbeitungsstatus zu überwachen
- Parallel verarbeiten:
IronOCRunterstützt die gleichzeitige Verarbeitung für mehrere Streams - Bildqualität optimieren: Verarbeiten Sie Streams vor, um optimale Auflösung und Klarheit sicherzustellen
Um eine maximale Leistung zu erzielen, sollten Sie die Optionen für die schnelle OCR-Konfiguration prüfen und die Implementierung der Multithreading-Verarbeitung für Stapelverarbeitungen in Betracht ziehen. Wenn Sie mit zeitkritischen Anwendungen arbeiten, kann das Verständnis von Zeitüberschreitungen Ihnen helfen, lang andauernde OCR-Vorgänge effektiv zu verwalten.
Wie behebe ich häufige Stream-Probleme?
Bei der Arbeit mit Strömen können Sie auf besondere Herausforderungen stoßen. Hier finden Sie Lösungen für häufige Szenarien:
- Stream-Position: Setzen Sie immer die Stream-Position auf
0zurück, bevor Sie sie anIronOCRübergeben - Entsorgung: Verwenden Sie
usingAnweisungen, um eine ordnungsgemäße Freigabe von Ressourcen sicherzustellen - Formatunterstützung: IronOCR unterstützt verschiedene Bildformate, einschließlich JPEG, PNG, TIFF und BMP durch Streams
- Speicherverwaltung: Für große Streams erwägen Sie die Verarbeitung in Stücken oder Streaming-Ansätze
Bei komplexen Dokumenten oder wenn die Standard-OCR keine zufriedenstellenden Ergebnisse liefert, können die Computer-Vision-Funktionen helfen, den Text genauer zu lokalisieren und zu extrahieren. Wenn Sie mit minderwertigen Datenströmen arbeiten, sollten Sie außerdem den Leitfaden Fixing low quality scans zu Vorverarbeitungstechniken lesen, die die Erkennungsraten erheblich verbessern können.
Ausführlichere Informationen zur Arbeit mit Streams und anderen Eingabemethoden finden Sie in unseren umfassenden How-to-Guides und Codebeispielen.
Häufig gestellte Fragen
Wie kann ich OCR an Bilddaten durchführen, ohne sie vorher auf der Festplatte zu speichern?
Mit IronOCR können Sie Bildströme direkt verarbeiten, indem Sie sie an die Konstruktoren OcrInput oder OcrImageInput übergeben. Dies ermöglicht eine effiziente OCR-Verarbeitung ohne die Erstellung temporärer Dateien, was ideal für die Verarbeitung von Web-Uploads, Datenbank-BLOBs oder sensiblen Dokumenten ist, die nicht auf die Festplatte gelangen sollen.
Welche Arten von Datenströmen können als Input für die OCR-Verarbeitung verwendet werden?
IronOCR akzeptiert jeden System.IO.Stream, der Bilddaten enthält. Dazu gehören Speicherströme aus Web-Uploads, Ströme aus BLOB-Feldern von Datenbanken oder Ströme, die von Bildbearbeitungsbibliotheken erstellt wurden. Die Bibliothek führt alle erforderlichen Konvertierungsschritte automatisch durch, wenn Sie den Stream an OcrInput oder OcrImageInput übergeben.
Wie kann ich in C# am einfachsten OCR für einen Stream durchführen?
Die schnellste Methode ist, ein OcrInput-Objekt mit Ihrem Stream zu erstellen und die Read-Methode aufzurufen: 'using var input = new IronOcr.OcrInput(stream); var result = new IronOcr.IronTesseract().Read(input);'. Dieser minimale Code führt die OCR durch und gibt den erkannten Text sofort zurück.
Warum sollte ich für OCR Streams anstelle von Dateipfaden verwenden?
Stream-basierte OCR mit IronOCR bietet mehrere Vorteile: Speichereffizienz durch die Verarbeitung von Daten in Chunks, erhöhte Sicherheit durch die Vermeidung von temporären Dateien auf der Festplatte, verbesserte Leistung durch die Beseitigung von Datei-E/A-Overhead und größere Flexibilität bei der Arbeit mit Web-Uploads oder Datenbank-BLOBs.
Kann ich einen bestimmten Bereich eines Bildstroms angeben, der gelesen werden soll?
Ja, IronOCR ermöglicht es Ihnen, den Lesebereich zu definieren, indem Sie bei der Verarbeitung von Datenströmen einen Beschnittbereich angeben. Mit dieser Funktion können Sie sich bei der OCR auf bestimmte Teile des Bildes konzentrieren, ohne das gesamte Dokument zu verarbeiten, was sowohl die Geschwindigkeit als auch die Genauigkeit verbessert.
Wie lässt sich die Stream-Verarbeitung in andere Bildbearbeitungsbibliotheken integrieren?
Der Stream-Ansatz von IronOCR lässt sich nahtlos in System.Drawing-Objekte und andere .NET-Bibliotheken zur Bildbearbeitung integrieren. Sie können die AnyBitmap-Klasse verwenden, um Bilder mit der GetStream-Methode in Streams zu konvertieren, was die Kombination von OCR mit anderen Bildverarbeitungs-Workflows erleichtert.
Kann IronOCR in bestehende Anwendungen integriert werden?
IronOCR ist darauf ausgelegt, leicht in bestehende Anwendungen mithilfe von C# integriert zu werden, sodass Entwickler OCR-Funktionalität mit minimalem Aufwand zu ihrer Software hinzufügen können.
Was sind die Vorteile der Nutzung von IronOCR für das Dokumentenmanagement?
Die Verwendung von IronOCR für das Dokumentenmanagement rationalisiert den Arbeitsablauf, indem gescannte Dokumente in durchsuchbare und bearbeitbare Texte umgewandelt werden, wodurch der Bedarf an manueller Dateneingabe reduziert und die Zugänglichkeit von Dokumenten verbessert wird.
Wie kann IronOCR die Datenqualität verbessern?
IronOCR verbessert die Datenqualität durch seine fortschrittlichen Erkennungsalgorithmen und Bildkorrekturfunktionen, die sicherstellen, dass der Textextraktionsprozess sowohl zuverlässig als auch genau ist.
Gibt es eine kostenlose Testversion von IronOCR?
Ja, Iron Software bietet eine kostenlose Testversion von IronOCR an, die es den Benutzern ermöglicht, die Funktionen und Fähigkeiten zu testen, bevor sie eine Kaufentscheidung treffen.

