C# OCR Image to Text Tutorial: Convert Images to Text Without Tesseract
Szukasz sposobu na konwersję obrazów na tekst w C# bez zawiłości związanych z konfiguracją Tesseract? Ten kompleksowy samouczek IronOCR C# pokazuje, jak wdrożyć zaawansowane rozpoznawanie znaków w aplikacjach .NET za pomocą zaledwie kilku linii kodu.
Quickstart: Wyodrębnij tekst z obrazu w jednej linii
Ten przykład pokazuje, jak łatwo zrozumieć IronOCR—tylko jedna linia C# zamienia twój obraz w tekst. Demonstruje inicjowanie silnika OCR i natychmiastowe odczytywanie oraz pobieranie tekstu bez złożonej konfiguracji.
-
Install IronOCR with NuGet Package Manager
PM > Install-Package IronOcr -
Skopiuj i uruchom ten fragment kodu.
string text = new IronTesseract().Read("image.png").Text; -
Wdrożenie do testowania w środowisku produkcyjnym
Rozpocznij używanie IronOCR w swoim projekcie już dziś z darmową wersją próbną
Minimalny proces (5 kroków)
- Pobierz IronOCR - bibliotekę OCR C# do konwersji obrazu na tekst
- Użyj klasy
IronTesseract, aby natychmiast odczytywać tekst z obrazów - Zastosuj filtry obrazu, aby poprawić dokładność OCR na skanach niskiej jakości
- Przetwarzaj wiele języków za pomocą pakietów językowych do pobrania
- Eksportuj wyniki jako przeszukiwalne pliki PDF lub wyodrębnij ciągi tekstowe
Jak odczytać tekst z obrazów w aplikacjach .NET?
Aby osiągnąć funkcjonalność OCR C# konwersji obrazu na tekst w aplikacjach .NET, potrzebujesz niezawodnej biblioteki OCR. IronOCR zapewnia zarządzane rozwiązanie z użyciem klasy IronOcr.IronTesseract, która maksymalizuje zarówno dokładność, jak i prędkość bez potrzeby zewnętrznych zależności.
Najpierw zainstaluj IronOCR do swojego projektu w Visual Studio. Możesz pobrać bibliotekę DLL IronOCR bezpośrednio lub użyć NuGet Package Manager.
Install-Package IronOcr
Dlaczego wybrać IronOCR do OCR C# bez Tesseract?
Kiedy potrzebujesz konwersji obrazów na tekst w C#, IronOCR oferuje znaczące zalety w porównaniu z tradycyjnymi wdrożeniami Tesseract:
- Działa natychmiast w czystych środowiskach .NET
- Nie wymaga instalacji ani konfiguracji Tesseract
- Uruchamia najnowsze silniki: Tesseract 5 (plus Tesseract 4 i 3)
- Kompatybilny z .NET Framework 4.6.2+, .NET Standard 2+, oraz .NET Core 2, 3, 5, 6, 7, 8, 9 i 10
- Poprawia dokładność i prędkość w porównaniu z czystym Tesseract
- Wspiera wdrożenia Xamarin, Mono, Azure i Docker
- Zarządza złożonymi słownikami Tesseract poprzez pakiety NuGet
- Automatycznie obsługuje pliki PDF, MultiFrame TIFF oraz wszystkie główne formaty obrazów
- Koryguje skany niskiej jakości i przekrzywione dla optymalnych rezultatów
Jak używać samouczka IronOCR C# do podstawowego OCR?
Ten przykład C# Iron Tesseract pokazuje najprostszy sposób na odczytywanie tekstu z obrazu z użyciem IronOCR. Klasa IronOcr.IronTesseract wyodrębnia tekst i zwraca go jako ciąg znaków.
// Basic C# OCR image to text conversion using IronOCR
// This example shows how to extract text from images without complex setup
using IronOcr;
using System;
try
{
// Initialize IronTesseract for OCR operations
var ocrEngine = new IronTesseract();
// Path to your image file - supports PNG, JPG, TIFF, BMP, and more
var imagePath = @"img\Screenshot.png";
// Create input and perform OCR to convert image to text
using (var input = new OcrInput(imagePath))
{
// Read text from image and get results
OcrResult result = ocrEngine.Read(input);
// Display extracted text
Console.WriteLine(result.Text);
}
}
catch (OcrException ex)
{
// Handle OCR-specific errors
Console.WriteLine($"OCR Error: {ex.Message}");
}
catch (Exception ex)
{
// Handle general errors
Console.WriteLine($"Error: {ex.Message}");
}
// Basic C# OCR image to text conversion using IronOCR
// This example shows how to extract text from images without complex setup
using IronOcr;
using System;
try
{
// Initialize IronTesseract for OCR operations
var ocrEngine = new IronTesseract();
// Path to your image file - supports PNG, JPG, TIFF, BMP, and more
var imagePath = @"img\Screenshot.png";
// Create input and perform OCR to convert image to text
using (var input = new OcrInput(imagePath))
{
// Read text from image and get results
OcrResult result = ocrEngine.Read(input);
// Display extracted text
Console.WriteLine(result.Text);
}
}
catch (OcrException ex)
{
// Handle OCR-specific errors
Console.WriteLine($"OCR Error: {ex.Message}");
}
catch (Exception ex)
{
// Handle general errors
Console.WriteLine($"Error: {ex.Message}");
}
' Basic C# OCR image to text conversion using IronOCR
' This example shows how to extract text from images without complex setup
Imports IronOcr
Imports System
Try
' Initialize IronTesseract for OCR operations
Dim ocrEngine = New IronTesseract()
' Path to your image file - supports PNG, JPG, TIFF, BMP, and more
Dim imagePath = "img\Screenshot.png"
' Create input and perform OCR to convert image to text
Using input = New OcrInput(imagePath)
' Read text from image and get results
Dim result As OcrResult = ocrEngine.Read(input)
' Display extracted text
Console.WriteLine(result.Text)
End Using
Catch ex As OcrException
' Handle OCR-specific errors
Console.WriteLine($"OCR Error: {ex.Message}")
Catch ex As Exception
' Handle general errors
Console.WriteLine($"Error: {ex.Message}")
End Try
Ten kod osiąga 100% dokładność na klarownych obrazach, wyodrębniając tekst dokładnie tak, jak się pojawia:
IronOCR Simple Example
In this simple example we 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
Klasa IronTesseract obsługuje złożone operacje OCR wewnętrznie. Automatycznie skanuje wyrównanie, optymalizuje rozdzielczość i używa AI do odczytywania tekstu z obrazu za pomocą IronOCR z dokładnością na poziomie ludzkim.
Pomimo skomplikowanego przetwarzania, które odbywa się w tle - w tym analizy obrazu, optymalizacji silnika i inteligentnego rozpoznawania tekstu - proces OCR dopasowuje się do szybkości czytania przez człowieka, utrzymując wyjątkowe poziomy dokładności.
Simple Example IronOCR pokazujący konwersję obrazu OCR C# na tekst z dokładnością 100% Zrzut ekranu demonstrujący zdolność IronOCR do wyodrębniania tekstu z obrazu PNG z perfekcyjną dokładnością
Jak wdrożyć zaawansowane OCR C# bez konfiguracji Tesseract?
Dla aplikacji produkcyjnych wymagających optymalnej wydajności podczas konwersji obrazów na tekst w C#, użyj razem klas OcrInput i IronTesseract. To podejście zapewnia szczegółową kontrolę nad procesem OCR.
Funkcje klasy OcrInput
- Przetwarza wiele formatów obrazów: JPEG, TIFF, GIF, BMP, PNG
- Importuje kompletne PDF-y lub określone strony
- Poprawia kontrast, rozdzielczość i jakość obrazu automatycznie
- Koryguje obrót, szumy skanowania, przekrzywienie i obrazy negatywowe
Funkcje klasy IronTesseract
- Dostęp do ponad 127 gotowych pakietów językowych
- Zawiera silniki Tesseract 5, 4 i 3
- Specyfikacja typu dokumentu (zrzut ekranu, fragment lub pełny dokument)
- Zintegrowane funkcje odczytu BarCODE
- Wiele formatów wyjściowych: pliki PDF z możliwością wyszukiwania, HOCR HTML, obiekty DOM i ciągi znaków
Jak rozpocząć pracę z OcrInput i IronTesseract?
Oto zalecana konfiguracja dla tego samouczka IronOCR C#, która działa dobrze z większością typów dokumentów:
using IronOcr;
// Initialize IronTesseract for advanced OCR operations
IronTesseract ocr = new IronTesseract();
// Create input container for processing multiple images
using (OcrInput input = new OcrInput())
{
// Process specific pages from multi-page TIFF files
int[] pageIndices = new int[] { 1, 2 };
// Load TIFF frames - perfect for scanned documents
input.LoadImageFrames(@"img\Potter.tiff", pageIndices);
// Execute OCR to read text from image using IronOCR
OcrResult result = ocr.Read(input);
// Output the extracted text
Console.WriteLine(result.Text);
}
using IronOcr;
// Initialize IronTesseract for advanced OCR operations
IronTesseract ocr = new IronTesseract();
// Create input container for processing multiple images
using (OcrInput input = new OcrInput())
{
// Process specific pages from multi-page TIFF files
int[] pageIndices = new int[] { 1, 2 };
// Load TIFF frames - perfect for scanned documents
input.LoadImageFrames(@"img\Potter.tiff", pageIndices);
// Execute OCR to read text from image using IronOCR
OcrResult result = ocr.Read(input);
// Output the extracted text
Console.WriteLine(result.Text);
}
Imports IronOcr
' Initialize IronTesseract for advanced OCR operations
Private ocr As New IronTesseract()
' Create input container for processing multiple images
Using input As New OcrInput()
' Process specific pages from multi-page TIFF files
Dim pageIndices() As Integer = { 1, 2 }
' Load TIFF frames - perfect for scanned documents
input.LoadImageFrames("img\Potter.tiff", pageIndices)
' Execute OCR to read text from image using IronOCR
Dim result As OcrResult = ocr.Read(input)
' Output the extracted text
Console.WriteLine(result.Text)
End Using
Ta konfiguracja konsekwentnie zapewnia niemal idealną dokładność w przypadku skanów o średniej jakości. Metoda LoadImageFrames skutecznie obsługuje dokumenty wielostronicowe, co czyni ją idealną dla scenariuszy przetwarzania wsadowego.
Przykładowy dokument TIFF pokazujący możliwości IronOCR w zakresie ekstrakcji tekstu z wielu stron
Możliwość odczytu tekstu z obrazów i BARCODE-ów w zeskanowanych dokumentach, takich jak pliki TIFF, pokazuje, w jaki sposób IronOCR upraszcza złożone zadania OCR. Biblioteka doskonale radzi sobie z dokumentami z życia codziennego, płynnie obsługując wielostronicowe pliki TIFF i wyodrębnianie tekstu z plików PDF.
Jak IronOCR radzi sobie ze skanami niskiej jakości?
Dokument o niskiej rozdzielczości z zakłóceniami, który IronOCR może dokładnie przetworzyć przy użyciu filtrów obrazu
W przypadku pracy z niedoskonałymi skanami zawierającymi zniekształcenia i szumy cyfrowe, biblioteka IronOCR przewyższa inne biblioteki OCR dla języka C#. Zostało zaprojektowane specjalnie z myślą o rzeczywistych scenariuszach, a nie idealnych obrazach testowych.
// Advanced Iron Tesseract C# example for low-quality images
using IronOcr;
using System;
var ocr = new IronTesseract();
try
{
using (var input = new OcrInput())
{
// Load specific pages from poor-quality TIFF
var pageIndices = new int[] { 0, 1 };
input.LoadImageFrames(@"img\Potter.LowQuality.tiff", pageIndices);
// Apply deskew filter to correct rotation and perspective
input.Deskew(); // Critical for improving accuracy on skewed scans
// Perform OCR with enhanced preprocessing
OcrResult result = ocr.Read(input);
// Display results
Console.WriteLine("Recognized Text:");
Console.WriteLine(result.Text);
}
}
catch (Exception ex)
{
Console.WriteLine($"Error during OCR: {ex.Message}");
}
// Advanced Iron Tesseract C# example for low-quality images
using IronOcr;
using System;
var ocr = new IronTesseract();
try
{
using (var input = new OcrInput())
{
// Load specific pages from poor-quality TIFF
var pageIndices = new int[] { 0, 1 };
input.LoadImageFrames(@"img\Potter.LowQuality.tiff", pageIndices);
// Apply deskew filter to correct rotation and perspective
input.Deskew(); // Critical for improving accuracy on skewed scans
// Perform OCR with enhanced preprocessing
OcrResult result = ocr.Read(input);
// Display results
Console.WriteLine("Recognized Text:");
Console.WriteLine(result.Text);
}
}
catch (Exception ex)
{
Console.WriteLine($"Error during OCR: {ex.Message}");
}
' Advanced Iron Tesseract C# example for low-quality images
Imports IronOcr
Imports System
Private ocr = New IronTesseract()
Try
Using input = New OcrInput()
' Load specific pages from poor-quality TIFF
Dim pageIndices = New Integer() { 0, 1 }
input.LoadImageFrames("img\Potter.LowQuality.tiff", pageIndices)
' Apply deskew filter to correct rotation and perspective
input.Deskew() ' Critical for improving accuracy on skewed scans
' Perform OCR with enhanced preprocessing
Dim result As OcrResult = ocr.Read(input)
' Display results
Console.WriteLine("Recognized Text:")
Console.WriteLine(result.Text)
End Using
Catch ex As Exception
Console.WriteLine($"Error during OCR: {ex.Message}")
End Try
Używając Input.Deskew(), dokładność wzrasta do 99,8% na niskiej jakości skanach, prawie osiągając wyniki wysokiej jakości. To pokazuje, dlaczego IronOCR jest preferowanym wyborem dla OCR w C# bez komplikacji związanych z Tesseractem.
Filtry obrazów mogą nieznacznie wydłużyć czas przetwarzania, ale znacznie skrócą całkowity czas trwania OCR. Znalezienie odpowiedniej równowagi zależy od jakości dokumentu.
W większości scenariuszy Input.Deskew() i Input.DeNoise() zapewniają niezawodne poprawki wydajności OCR. Dowiedz się więcej o technikach wstępnego przetwarzania obrazów.
Jak zoptymalizować wydajność i szybkość OCR?
Najważniejszym czynnikiem wpływającym na szybkość OCR podczas konwersji obrazów na tekst w języku C# jest jakość danych wejściowych. Wyższa rozdzielczość (około 200 dpi) przy minimalnym poziomie szumu zapewnia najszybsze i najdokładniejsze wyniki.
Chociaż IronOCR doskonale radzi sobie z poprawianiem dokumentów zawierających błędy, to ulepszenie wymaga dodatkowego czasu przetwarzania.
Wybierz formaty obrazów z minimalnymi artefaktami kompresji. Formaty TIFF i PNG zazwyczaj zapewniają szybsze wyniki niż JPEG ze względu na mniejszy poziom szumu cyfrowego.
Które filtry obrazu zwiększają szybkość OCR?
Następujące filtry mogą znacznie poprawić wydajność procesu przekształcania obrazów w tekst w języku C# przy użyciu OCR:
OcrInput.Rotate(double degrees): Obraca obrazy zgodnie z ruchem wskazówek zegara (w przeciwnym razie w lewo)OcrInput.Binarize(): Konwertuje na czarno-biały, poprawiając wydajność w scenariuszach niskiego kontrastuOcrInput.ToGrayScale(): Konwertuje na skale szarości dla potencjalnych przyspieszeńOcrInput.Contrast(): Automatycznie dostosowuje kontrast dla lepszej dokładnościOcrInput.DeNoise(): Usuwa cyfrowe artefakty, gdy oczekuje się szumówOcrInput.Invert(): Odwraca kolory dla białego tekstu na czarnym tleOcrInput.Dilate(): Rozszerza granice tekstuOcrInput.Erode(): Zmniejsza granice tekstuOcrInput.Deskew(): Koryguje wyrównanie - niezbędne dla przekrzywionych dokumentówOcrInput.DeepCleanBackgroundNoise(): Agresywne usuwanie szumówOcrInput.EnhanceResolution: Poprawia jakość obrazów niskiej rozdzielczościOcrInput.DetectPageOrientation(): Wykrywa i koryguje obrót strony. PrzekażOrientationDetectionMode, aby kontrolować kompromis między dokładnością a szybkością:Fast,Balanced,DetailedlubExtremeDetailed(dodano v2025.8.6)
Scale() i EnhanceResolution() są niekompatybilne z SaveAsSearchablePdf() z powodu znanego problemu w wersji v2025.12.3. Wszystkie inne filtry działają poprawnie z przeszukiwalnym wyjściem PDF.
Jak skonfigurować IronOCR, aby uzyskać maksymalną prędkość?
Użyj tych ustawień, aby zoptymalizować szybkość przetwarzania skanów o wysokiej jakości:
using IronOcr;
// Configure for speed - ideal for clean documents
IronTesseract ocr = new IronTesseract();
// Exclude problematic characters to speed up recognition
ocr.Configuration.BlackListCharacters = "~`$#^*_{[]}|\\";
// Use automatic page segmentation
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.Auto;
// Select fast English language pack
ocr.Language = OcrLanguage.EnglishFast;
using (OcrInput input = new OcrInput())
{
// Load specific pages from document
int[] pageIndices = new int[] { 1, 2 };
input.LoadImageFrames(@"img\Potter.tiff", pageIndices);
// Read with optimized settings
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
}
using IronOcr;
// Configure for speed - ideal for clean documents
IronTesseract ocr = new IronTesseract();
// Exclude problematic characters to speed up recognition
ocr.Configuration.BlackListCharacters = "~`$#^*_{[]}|\\";
// Use automatic page segmentation
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.Auto;
// Select fast English language pack
ocr.Language = OcrLanguage.EnglishFast;
using (OcrInput input = new OcrInput())
{
// Load specific pages from document
int[] pageIndices = new int[] { 1, 2 };
input.LoadImageFrames(@"img\Potter.tiff", pageIndices);
// Read with optimized settings
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
}
Imports IronOcr
' Configure for speed - ideal for clean documents
Private ocr As New IronTesseract()
' Exclude problematic characters to speed up recognition
ocr.Configuration.BlackListCharacters = "~`$#^*_{[]}|\"
' Use automatic page segmentation
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.Auto
' Select fast English language pack
ocr.Language = OcrLanguage.EnglishFast
Using input As New OcrInput()
' Load specific pages from document
Dim pageIndices() As Integer = { 1, 2 }
input.LoadImageFrames("img\Potter.tiff", pageIndices)
' Read with optimized settings
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
End Using
Ta zoptymalizowana konfiguracja zapewnia 99,8% dokładności przy jednoczesnym 35-procentowym przyspieszeniu w porównaniu z ustawieniami domyślnymi.
Jak odczytywać określone obszary obrazów za pomocą OCR w języku C#?
Poniższy przykład C# Iron Tesseract pokazuje, jak celować w konkretne obszary przy użyciu System.Drawing.Rectangle. Technika ta jest nieoceniona przy przetwarzaniu standardowych formularzy, w których tekst pojawia się w przewidywalnych miejscach.
Czy IronOCR może przetwarzać przycięte obszary w celu uzyskania szybszych wyników?
Korzystając ze współrzędnych opartych na pikselach, można ograniczyć działanie OCR do określonych obszarów, co znacznie poprawia szybkość i zapobiega niepożądanemu wyodrębnianiu tekstu:
using IronOcr;
using IronSoftware.Drawing;
// Initialize OCR engine for targeted region processing
var ocr = new IronTesseract();
using (var input = new OcrInput())
{
// Define exact region for OCR - coordinates in pixels
var contentArea = new System.Drawing.Rectangle(
x: 215,
y: 1250,
width: 1335,
height: 280
);
// Load image with specific area - perfect for forms and invoices
input.LoadImage("img/ComSci.png", contentArea);
// Process only the defined region
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
}
using IronOcr;
using IronSoftware.Drawing;
// Initialize OCR engine for targeted region processing
var ocr = new IronTesseract();
using (var input = new OcrInput())
{
// Define exact region for OCR - coordinates in pixels
var contentArea = new System.Drawing.Rectangle(
x: 215,
y: 1250,
width: 1335,
height: 280
);
// Load image with specific area - perfect for forms and invoices
input.LoadImage("img/ComSci.png", contentArea);
// Process only the defined region
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
}
Imports IronOcr
Imports IronSoftware.Drawing
' Initialize OCR engine for targeted region processing
Dim ocr As New IronTesseract()
Using input As New OcrInput()
' Define exact region for OCR - coordinates in pixels
Dim contentArea As New System.Drawing.Rectangle(215, 1250, 1335, 280)
' Load image with specific area - perfect for forms and invoices
input.LoadImage("img/ComSci.png", contentArea)
' Process only the defined region
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
End Using
To ukierunkowane podejście zapewnia 41% wzrost szybkości przy wyodrębnianiu wyłącznie istotnego tekstu. Idealnie nadaje się do dokumentów o ustalonej strukturze, takich jak faktury, czeki i formularze. Ta sama technika przycinania działa płynnie w operacjach OCR plików PDF.
Computer Science dokument pokazujący wyodrębnianie obszaru OCR w C# Dokument pokazujący precyzyjne wyodrębnianie tekstu na podstawie regionu przy użyciu zaznaczenia prostokątnego w IronOCR
Ile języków obsługuje IronOCR?
IronOCR oferuje 127 języków międzynarodowych w postaci wygodnych pakietów językowych. Pobierz je jako pliki DLL z naszej strony internetowej lub za pośrednictwem menedżera pakietów NuGet.
Zainstaluj pakiety językowe za pośrednictwem interfejsu NuGet (wyszukaj "IronOcr.Languages") lub odwiedź pełną listę pakietów językowych.
Obsługiwane języki to arabski, chiński (uproszczony/tradycyjny), japoński, koreański, hindi, rosyjski, niemiecki, francuski, hiszpański oraz ponad 115 innych, z których każdy jest zoptymalizowany pod kątem dokładnego rozpoznawania tekstu.
Jak wdrożyć OCR w wielu językach?
Ten przykładowy samouczek IronOCR w języku C# pokazuje rozpoznawanie tekstu arabskiego:
Install-Package IronOcr.Languages.Arabic
IronOCR dokładnie wyodrębnia tekst arabski z obrazu GIF
// Install-Package IronOcr.Languages.Arabic
using IronOcr;
// Configure for Arabic language OCR
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.Arabic;
using (var input = new OcrInput())
{
// Load Arabic text image
input.LoadImage("img/arabic.gif");
// IronOCR handles low-quality Arabic text that standard Tesseract cannot
var result = ocr.Read(input);
// Save to file (console may not display Arabic correctly)
result.SaveAsTextFile("arabic.txt");
}
// Install-Package IronOcr.Languages.Arabic
using IronOcr;
// Configure for Arabic language OCR
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.Arabic;
using (var input = new OcrInput())
{
// Load Arabic text image
input.LoadImage("img/arabic.gif");
// IronOCR handles low-quality Arabic text that standard Tesseract cannot
var result = ocr.Read(input);
// Save to file (console may not display Arabic correctly)
result.SaveAsTextFile("arabic.txt");
}
Imports IronOcr
' Configure for Arabic language OCR
Dim ocr As New IronTesseract()
ocr.Language = OcrLanguage.Arabic
Using input As New OcrInput()
' Load Arabic text image
input.LoadImage("img/arabic.gif")
' IronOCR handles low-quality Arabic text that standard Tesseract cannot
Dim result = ocr.Read(input)
' Save to file (console may not display Arabic correctly)
result.SaveAsTextFile("arabic.txt")
End Using
Czy IronOCR obsługuje dokumenty w wielu językach?
Jeśli dokumenty zawierają różne języki, skonfiguruj IronOCR do obsługi wielu języków:
Install-Package IronOcr.Languages.ChineseSimplified
// Multi-language OCR configuration
using IronOcr;
var ocr = new IronTesseract();
// Set primary language
ocr.Language = OcrLanguage.ChineseSimplified;
// Add secondary languages as needed
ocr.AddSecondaryLanguage(OcrLanguage.English);
// Custom .traineddata files can be added for specialized recognition
// ocr.AddSecondaryLanguage("path/to/custom.traineddata");
using (var input = new OcrInput())
{
// Process multi-language document
input.LoadImage("img/MultiLanguage.jpeg");
var result = ocr.Read(input);
result.SaveAsTextFile("MultiLanguage.txt");
}
// Multi-language OCR configuration
using IronOcr;
var ocr = new IronTesseract();
// Set primary language
ocr.Language = OcrLanguage.ChineseSimplified;
// Add secondary languages as needed
ocr.AddSecondaryLanguage(OcrLanguage.English);
// Custom .traineddata files can be added for specialized recognition
// ocr.AddSecondaryLanguage("path/to/custom.traineddata");
using (var input = new OcrInput())
{
// Process multi-language document
input.LoadImage("img/MultiLanguage.jpeg");
var result = ocr.Read(input);
result.SaveAsTextFile("MultiLanguage.txt");
}
Imports IronOcr
' Multi-language OCR configuration
Dim ocr As New IronTesseract()
' Set primary language
ocr.Language = OcrLanguage.ChineseSimplified
' Add secondary languages as needed
ocr.AddSecondaryLanguage(OcrLanguage.English)
' Custom .traineddata files can be added for specialized recognition
' ocr.AddSecondaryLanguage("path/to/custom.traineddata")
Using input As New OcrInput()
' Process multi-language document
input.LoadImage("img/MultiLanguage.jpeg")
Dim result = ocr.Read(input)
result.SaveAsTextFile("MultiLanguage.txt")
End Using
Jak przetwarzać dokumenty wielostronicowe za pomocą OCR w języku C#?
IronOCR bezproblemowo łączy wiele stron lub obrazów w jeden OcrResult. Ta funkcja zapewnia zaawansowane możliwości, takie jak tworzenie plików PDF z funkcją wyszukiwania oraz wyodrębnianie tekstu z całych zestawów dokumentów.
Łącz i dopasowuj różne źródła — obrazy, ramki TIFF i strony PDF — w ramach jednej operacji OCR:
// Multi-source document processing
using IronOcr;
IronTesseract ocr = new IronTesseract();
using (OcrInput input = new OcrInput())
{
// Add various image formats
input.LoadImage("image1.jpeg");
input.LoadImage("image2.png");
// Process specific frames from multi-frame images
int[] frameNumbers = { 1, 2 };
input.LoadImageFrames("image3.gif", frameNumbers);
// Process all sources together
OcrResult result = ocr.Read(input);
// Verify page count
Console.WriteLine($"{result.Pages.Count} Pages processed.");
}
// Multi-source document processing
using IronOcr;
IronTesseract ocr = new IronTesseract();
using (OcrInput input = new OcrInput())
{
// Add various image formats
input.LoadImage("image1.jpeg");
input.LoadImage("image2.png");
// Process specific frames from multi-frame images
int[] frameNumbers = { 1, 2 };
input.LoadImageFrames("image3.gif", frameNumbers);
// Process all sources together
OcrResult result = ocr.Read(input);
// Verify page count
Console.WriteLine($"{result.Pages.Count} Pages processed.");
}
Imports IronOcr
' Multi-source document processing
Dim ocr As New IronTesseract()
Using input As New OcrInput()
' Add various image formats
input.LoadImage("image1.jpeg")
input.LoadImage("image2.png")
' Process specific frames from multi-frame images
Dim frameNumbers As Integer() = {1, 2}
input.LoadImageFrames("image3.gif", frameNumbers)
' Process all sources together
Dim result As OcrResult = ocr.Read(input)
' Verify page count
Console.WriteLine($"{result.Pages.Count} Pages processed.")
End Using
Wydajne przetwarzanie wszystkich stron pliku TIFF:
using IronOcr;
IronTesseract ocr = new IronTesseract();
using (OcrInput input = new OcrInput())
{
// Define pages to process (0-based indexing)
int[] pageIndices = new int[] { 0, 1 };
// Load specific TIFF frames
input.LoadImageFrames("MultiFrame.Tiff", pageIndices);
// Extract text from all frames
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
Console.WriteLine($"{result.Pages.Count} Pages processed");
}
using IronOcr;
IronTesseract ocr = new IronTesseract();
using (OcrInput input = new OcrInput())
{
// Define pages to process (0-based indexing)
int[] pageIndices = new int[] { 0, 1 };
// Load specific TIFF frames
input.LoadImageFrames("MultiFrame.Tiff", pageIndices);
// Extract text from all frames
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
Console.WriteLine($"{result.Pages.Count} Pages processed");
}
Imports IronOcr
Private ocr As New IronTesseract()
Using input As New OcrInput()
' Define pages to process (0-based indexing)
Dim pageIndices() As Integer = { 0, 1 }
' Load specific TIFF frames
input.LoadImageFrames("MultiFrame.Tiff", pageIndices)
' Extract text from all frames
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
Console.WriteLine($"{result.Pages.Count} Pages processed")
End Using
Konwertuj pliki TIFF lub PDF do formatów umożliwiających wyszukiwanie:
using System;
using IronOcr;
IronTesseract ocr = new IronTesseract();
using (OcrInput input = new OcrInput())
{
// Set document metadata
input.Title = "Quarterly Report";
// Combine multiple sources
input.LoadImage("image1.jpeg");
input.LoadImage("image2.png");
// Add specific frames from animated images
int[] gifFrames = new int[] { 1, 2 };
input.LoadImageFrames("image3.gif", gifFrames);
// Create searchable PDF
OcrResult result = ocr.Read(input);
// Pass true to apply any active OcrInput filters to the searchable PDF output (added v2025.5.11)
result.SaveAsSearchablePdf("searchable.pdf", true);
}
using System;
using IronOcr;
IronTesseract ocr = new IronTesseract();
using (OcrInput input = new OcrInput())
{
// Set document metadata
input.Title = "Quarterly Report";
// Combine multiple sources
input.LoadImage("image1.jpeg");
input.LoadImage("image2.png");
// Add specific frames from animated images
int[] gifFrames = new int[] { 1, 2 };
input.LoadImageFrames("image3.gif", gifFrames);
// Create searchable PDF
OcrResult result = ocr.Read(input);
// Pass true to apply any active OcrInput filters to the searchable PDF output (added v2025.5.11)
result.SaveAsSearchablePdf("searchable.pdf", true);
}
Imports System
Imports IronOcr
Dim ocr As New IronTesseract()
Using input As New OcrInput()
' Set document metadata
input.Title = "Quarterly Report"
' Combine multiple sources
input.LoadImage("image1.jpeg")
input.LoadImage("image2.png")
' Add specific frames from animated images
Dim gifFrames As Integer() = {1, 2}
input.LoadImageFrames("image3.gif", gifFrames)
' Create searchable PDF
Dim result As OcrResult = ocr.Read(input)
' Pass true to apply any active OcrInput filters to the searchable PDF output (added v2025.5.11)
result.SaveAsSearchablePdf("searchable.pdf", True)
End Using
Konwersja istniejących plików PDF do wersji z możliwością wyszukiwania:
using IronOcr;
var ocr = new IronTesseract();
using (var input = new OcrInput())
{
// Set PDF metadata
input.Title = "Annual Report 2024";
// Process existing PDF
input.LoadPdf("example.pdf", "password");
// Generate searchable version
var result = ocr.Read(input);
result.SaveAsSearchablePdf("searchable.pdf");
}
using IronOcr;
var ocr = new IronTesseract();
using (var input = new OcrInput())
{
// Set PDF metadata
input.Title = "Annual Report 2024";
// Process existing PDF
input.LoadPdf("example.pdf", "password");
// Generate searchable version
var result = ocr.Read(input);
result.SaveAsSearchablePdf("searchable.pdf");
}
Imports IronOcr
Private ocr = New IronTesseract()
Using input = New OcrInput()
' Set PDF metadata
input.Title = "Annual Report 2024"
' Process existing PDF
input.LoadPdf("example.pdf", "password")
' Generate searchable version
Dim result = ocr.Read(input)
result.SaveAsSearchablePdf("searchable.pdf")
End Using
Zastosuj tę samą technikę do konwersji plików TIFF:
using IronOcr;
var ocr = new IronTesseract();
using (var input = new OcrInput())
{
// Configure document properties
input.Title = "Scanned Archive Document";
// Select pages to process
var pageIndices = new int[] { 1, 2 };
input.LoadImageFrames("example.tiff", pageIndices);
// Create searchable PDF from TIFF
OcrResult result = ocr.Read(input);
result.SaveAsSearchablePdf("searchable.pdf");
}
using IronOcr;
var ocr = new IronTesseract();
using (var input = new OcrInput())
{
// Configure document properties
input.Title = "Scanned Archive Document";
// Select pages to process
var pageIndices = new int[] { 1, 2 };
input.LoadImageFrames("example.tiff", pageIndices);
// Create searchable PDF from TIFF
OcrResult result = ocr.Read(input);
result.SaveAsSearchablePdf("searchable.pdf");
}
Imports IronOcr
Private ocr = New IronTesseract()
Using input = New OcrInput()
' Configure document properties
input.Title = "Scanned Archive Document"
' Select pages to process
Dim pageIndices = New Integer() { 1, 2 }
input.LoadImageFrames("example.tiff", pageIndices)
' Create searchable PDF from TIFF
Dim result As OcrResult = ocr.Read(input)
result.SaveAsSearchablePdf("searchable.pdf")
End Using
Jak wyeksportować wyniki OCR jako HOCR HTML?
IronOCR obsługuje eksport HOCR HTML, umożliwiając konwersję plików PDF o strukturze do formatu HTML oraz plików TIFF do formatu HTML przy zachowaniu informacji o układzie:
using IronOcr;
var ocr = new IronTesseract();
using (var input = new OcrInput())
{
// Set HTML title
input.Title = "Document Archive";
// Process multiple document types
input.LoadImage("image2.jpeg");
input.LoadPdf("example.pdf", "password");
// Add TIFF pages
var pageIndices = new int[] { 1, 2 };
input.LoadImageFrames("example.tiff", pageIndices);
// Export as HOCR with position data
OcrResult result = ocr.Read(input);
result.SaveAsHocrFile("hocr.html");
}
using IronOcr;
var ocr = new IronTesseract();
using (var input = new OcrInput())
{
// Set HTML title
input.Title = "Document Archive";
// Process multiple document types
input.LoadImage("image2.jpeg");
input.LoadPdf("example.pdf", "password");
// Add TIFF pages
var pageIndices = new int[] { 1, 2 };
input.LoadImageFrames("example.tiff", pageIndices);
// Export as HOCR with position data
OcrResult result = ocr.Read(input);
result.SaveAsHocrFile("hocr.html");
}
Imports IronOcr
Dim ocr As New IronTesseract()
Using input As New OcrInput()
' Set HTML title
input.Title = "Document Archive"
' Process multiple document types
input.LoadImage("image2.jpeg")
input.LoadPdf("example.pdf", "password")
' Add TIFF pages
Dim pageIndices As Integer() = {1, 2}
input.LoadImageFrames("example.tiff", pageIndices)
' Export as HOCR with position data
Dim result As OcrResult = ocr.Read(input)
result.SaveAsHocrFile("hocr.html")
End Using
Czy IronOCR może odczytywać BarCodes wraz z tekstem?
IronOCR w unikalny sposób łączy rozpoznawanie tekstu z możliwością odczytu kodów kreskowych, eliminując potrzebę stosowania oddzielnych bibliotek:
// Enable combined text and barcode recognition
using IronOcr;
var ocr = new IronTesseract();
// Enable barcode detection
ocr.Configuration.ReadBarCodes = true;
using (var input = new OcrInput())
{
// Load image containing both text and barcodes
input.LoadImage("img/Barcode.png");
// Process both text and barcodes
var result = ocr.Read(input);
// Extract barcode data
foreach (var barcode in result.Barcodes)
{
Console.WriteLine($"Barcode Value: {barcode.Value}");
Console.WriteLine($"Type: {barcode.Type}, Location: {barcode.Location}");
}
}
// Enable combined text and barcode recognition
using IronOcr;
var ocr = new IronTesseract();
// Enable barcode detection
ocr.Configuration.ReadBarCodes = true;
using (var input = new OcrInput())
{
// Load image containing both text and barcodes
input.LoadImage("img/Barcode.png");
// Process both text and barcodes
var result = ocr.Read(input);
// Extract barcode data
foreach (var barcode in result.Barcodes)
{
Console.WriteLine($"Barcode Value: {barcode.Value}");
Console.WriteLine($"Type: {barcode.Type}, Location: {barcode.Location}");
}
}
Imports IronOcr
Dim ocr As New IronTesseract()
' Enable barcode detection
ocr.Configuration.ReadBarCodes = True
Using input As New OcrInput()
' Load image containing both text and barcodes
input.LoadImage("img/Barcode.png")
' Process both text and barcodes
Dim result = ocr.Read(input)
' Extract barcode data
For Each barcode In result.Barcodes
Console.WriteLine($"Barcode Value: {barcode.Value}")
Console.WriteLine($"Type: {barcode.Type}, Location: {barcode.Location}")
Next
End Using
Jak uzyskać dostęp do szczegółowych wyników OCR i metadanych?
Obiekt wyników IronOCR dostarcza kompleksowych danych, które zaawansowani programiści mogą wykorzystać w zaawansowanych aplikacjach.
Każdy OcrResult zawiera hierarchiczne kolekcje: strony, akapity, linie, słowa i znaki. Wszystkie elementy zawierają szczegółowe metadane, takie jak lokalizacja, informacje o czcionkach i wskaźniki pewności.
Poszczególne elementy (akapity, słowa, BarCodes) można eksportować jako obrazy lub mapy bitowe w celu dalszego przetwarzania:
using System;
using IronOcr;
using IronSoftware.Drawing;
// Configure with barcode support
IronTesseract ocr = new IronTesseract
{
Configuration = { ReadBarCodes = true }
};
using OcrInput input = new OcrInput();
// Process multi-page document
int[] pageIndices = { 1, 2 };
input.LoadImageFrames(@"img\Potter.tiff", pageIndices);
OcrResult result = ocr.Read(input);
// Navigate the complete results hierarchy
foreach (var page in result.Pages)
{
// Page-level data
int pageNumber = page.PageNumber;
string pageText = page.Text;
int pageWordCount = page.WordCount;
// Extract page elements
OcrResult.Barcode[] barcodes = page.Barcodes;
AnyBitmap pageImage = page.ToBitmap();
double pageWidth = page.Width;
double pageHeight = page.Height;
foreach (var paragraph in page.Paragraphs)
{
// Paragraph properties
int paragraphNumber = paragraph.ParagraphNumber;
string paragraphText = paragraph.Text;
double paragraphConfidence = paragraph.Confidence;
var textDirection = paragraph.TextDirection;
foreach (var line in paragraph.Lines)
{
// Line details including baseline information
string lineText = line.Text;
double lineConfidence = line.Confidence;
double baselineAngle = line.BaselineAngle;
double baselineOffset = line.BaselineOffset;
foreach (var word in line.Words)
{
// Word-level data
string wordText = word.Text;
double wordConfidence = word.Confidence;
// Font information (when available)
if (word.Font != null)
{
string fontName = word.Font.FontName;
double fontSize = word.Font.FontSize;
bool isBold = word.Font.IsBold;
bool isItalic = word.Font.IsItalic;
}
foreach (var character in word.Characters)
{
// Character-level analysis
string charText = character.Text;
double charConfidence = character.Confidence;
// Alternative character choices for spell-checking
OcrResult.Choice[] alternatives = character.Choices;
}
}
}
}
}
using System;
using IronOcr;
using IronSoftware.Drawing;
// Configure with barcode support
IronTesseract ocr = new IronTesseract
{
Configuration = { ReadBarCodes = true }
};
using OcrInput input = new OcrInput();
// Process multi-page document
int[] pageIndices = { 1, 2 };
input.LoadImageFrames(@"img\Potter.tiff", pageIndices);
OcrResult result = ocr.Read(input);
// Navigate the complete results hierarchy
foreach (var page in result.Pages)
{
// Page-level data
int pageNumber = page.PageNumber;
string pageText = page.Text;
int pageWordCount = page.WordCount;
// Extract page elements
OcrResult.Barcode[] barcodes = page.Barcodes;
AnyBitmap pageImage = page.ToBitmap();
double pageWidth = page.Width;
double pageHeight = page.Height;
foreach (var paragraph in page.Paragraphs)
{
// Paragraph properties
int paragraphNumber = paragraph.ParagraphNumber;
string paragraphText = paragraph.Text;
double paragraphConfidence = paragraph.Confidence;
var textDirection = paragraph.TextDirection;
foreach (var line in paragraph.Lines)
{
// Line details including baseline information
string lineText = line.Text;
double lineConfidence = line.Confidence;
double baselineAngle = line.BaselineAngle;
double baselineOffset = line.BaselineOffset;
foreach (var word in line.Words)
{
// Word-level data
string wordText = word.Text;
double wordConfidence = word.Confidence;
// Font information (when available)
if (word.Font != null)
{
string fontName = word.Font.FontName;
double fontSize = word.Font.FontSize;
bool isBold = word.Font.IsBold;
bool isItalic = word.Font.IsItalic;
}
foreach (var character in word.Characters)
{
// Character-level analysis
string charText = character.Text;
double charConfidence = character.Confidence;
// Alternative character choices for spell-checking
OcrResult.Choice[] alternatives = character.Choices;
}
}
}
}
}
Imports System
Imports IronOcr
Imports IronSoftware.Drawing
' Configure with barcode support
Private ocr As New IronTesseract With {
.Configuration = { ReadBarCodes = True }
}
Private OcrInput As using
' Process multi-page document
Private pageIndices() As Integer = { 1, 2 }
input.LoadImageFrames("img\Potter.tiff", pageIndices)
Dim result As OcrResult = ocr.Read(input)
' Navigate the complete results hierarchy
For Each page In result.Pages
' Page-level data
Dim pageNumber As Integer = page.PageNumber
Dim pageText As String = page.Text
Dim pageWordCount As Integer = page.WordCount
' Extract page elements
Dim barcodes() As OcrResult.Barcode = page.Barcodes
Dim pageImage As AnyBitmap = page.ToBitmap()
Dim pageWidth As Double = page.Width
Dim pageHeight As Double = page.Height
For Each paragraph In page.Paragraphs
' Paragraph properties
Dim paragraphNumber As Integer = paragraph.ParagraphNumber
Dim paragraphText As String = paragraph.Text
Dim paragraphConfidence As Double = paragraph.Confidence
Dim textDirection = paragraph.TextDirection
For Each line In paragraph.Lines
' Line details including baseline information
Dim lineText As String = line.Text
Dim lineConfidence As Double = line.Confidence
Dim baselineAngle As Double = line.BaselineAngle
Dim baselineOffset As Double = line.BaselineOffset
For Each word In line.Words
' Word-level data
Dim wordText As String = word.Text
Dim wordConfidence As Double = word.Confidence
' Font information (when available)
If word.Font IsNot Nothing Then
Dim fontName As String = word.Font.FontName
Dim fontSize As Double = word.Font.FontSize
Dim isBold As Boolean = word.Font.IsBold
Dim isItalic As Boolean = word.Font.IsItalic
End If
For Each character In word.Characters
' Character-level analysis
Dim charText As String = character.Text
Dim charConfidence As Double = character.Confidence
' Alternative character choices for spell-checking
Dim alternatives() As OcrResult.Choice = character.Choices
Next character
Next word
Next line
Next paragraph
Next page
Podsumowanie
IronOCR zapewnia programistom C# najbardziej zaawansowaną implementację API Tesseract, działającą płynnie na platformach Windows, Linux i Mac. Możliwość dokładnego odczytu tekstu z obrazu za pomocą IronOCR — nawet z dokumentów o niskiej jakości — wyróżnia to rozwiązanie spośród podstawowych rozwiązań OCR.
Unikalne funkcje biblioteki obejmują zintegrowane odczytywanie kodów BarCode oraz możliwość eksportowania wyników jako pliki PDF z funkcją wyszukiwania lub HOCR HTML, co nie jest dostępne w standardowych implementacjach Tesseract.
Kolejne kroki
Aby kontynuować naukę obsługi IronOCR:
- Zapoznaj się z naszym obszernym przewodnikiem dla początkujących
- Przeglądaj praktyczne przykłady kodu w języku C#
- Zapoznaj się ze szczegółową dokumentacją API
Pobierz kod źródłowy
Gotowy do wdrożenia konwersji obrazu OCR C# na tekst w swoich aplikacjach? Pobierz IronOCR i rozpocznij swoją bezpłatną wersję próbną już dzisiaj.
Często Zadawane Pytania
Jak mogę przekonwertować obrazy na tekst w języku C# bez użycia Tesseract?
Możesz użyć IronOCR do konwersji obrazów na tekst w języku C# bez konieczności korzystania z Tesseract. IronOCR upraszcza ten proces dzięki wbudowanym metodom, które bezpośrednio obsługują konwersję obrazu na tekst.
Jak poprawić dokładność OCR w przypadku obrazów o niskiej jakości?
IronOCR udostępnia filtry obrazu, takie jak Input.Deskew() i Input.DeNoise(), które można wykorzystać do poprawy jakości obrazów o niskiej rozdzielczości poprzez korekcję przekrzywienia i redukcję szumów, co znacznie poprawia dokładność OCR.
Jakie kroki należy wykonać, aby wyodrębnić tekst z wielostronicowego dokumentu przy użyciu OCR w języku C#?
Aby wyodrębnić tekst z dokumentów wielostronicowych, IronOCR umożliwia ładowanie i przetwarzanie każdej strony przy użyciu metod takich jak LoadPdf() dla plików PDF lub obsługi plików TIFF, skutecznie konwertując każdą stronę na tekst.
Czy możliwe jest jednoczesne odczytywanie BARCODE-ów i tekstu z obrazu?
Tak, IronOCR może odczytywać zarówno tekst, jak i BarCodes z jednego obrazu. Odczyt BarCodes można włączyć za pomocą OCR.Configuration.ReadBarCodes = true, co pozwala na wyodrębnianie zarówno danych tekstowych, jak i danych z BarCodes.
Jak skonfigurować OCR do przetwarzania dokumentów w wielu językach?
IronOCR obsługuje ponad 125 języków i pozwala ustawić język podstawowy za pomocą OCR.Language oraz dodać dodatkowe języki za pomocą OCR.AddSecondaryLanguage() w celu przetwarzania dokumentów wielojęzycznych.
Jakie metody są dostępne do eksportowania wyników OCR w różnych formatach?
IronOCR oferuje kilka metod eksportowania wyników OCR, takich jak SaveAsSearchablePdf() dla plików PDF, SaveAsTextFile() dla zwykłego tekstu oraz SaveAsHocrFile() dla formatu HOCR HTML.
Jak mogę zoptymalizować szybkość przetwarzania OCR w przypadku dużych plików graficznych?
Aby zoptymalizować szybkość przetwarzania OCR, należy użyć funkcji OcrLanguage.EnglishFast biblioteki IronOCR w celu szybszego rozpoznawania języka oraz zdefiniować konkretne obszary do OCR za pomocą System.Drawing.Rectangle, aby skrócić czas przetwarzania.
Jak poradzić sobie z przetwarzaniem OCR w przypadku chronionych plików PDF?
W przypadku plików PDF z zabezpieczeniami należy użyć metody LoadPdf() wraz z prawidłowym hasłem. IronOCR obsługuje pliki PDF oparte na obrazach, automatycznie konwertując strony na obrazy w celu przetworzenia przez OCR.
Co należy zrobić, jeśli wyniki OCR są niedokładne?
Jeśli wyniki OCR są niedokładne, rozważ użycie funkcji poprawy jakości obrazu IronOCR, takich jak Input.Deskew() i Input.DeNoise(), oraz upewnij się, że zainstalowane są odpowiednie pakiety językowe.
Czy mogę dostosować proces OCR, aby wykluczyć określone znaki?
Tak, IronOCR umożliwia dostosowanie procesu OCR za pomocą właściwości BlackListCharacters w celu wykluczenia określonych znaków, co poprawia dokładność i szybkość przetwarzania poprzez skupienie się wyłącznie na istotnym tekście.

