Zapisywanie wyników OCR jako hOCR HTML w języku C# za pomocą IronOCR
IronOCR umożliwia programistom zapisywanie wyników OCR jako pliki HTML hOCR, ustawiając RenderHocr na true i używając metod SaveAsHocrFile lub SaveAsHocrString, zachowując układ tekstu i koordynaty znaków w ustrukturyzowanym formacie HTML.
Szybki start: Zapisywanie wyników OCR jako pliku hOCR HTML
Włącz renderowanie hOCR i eksportuj wyniki bezpośrednio do pliku HTML za pomocą jednej konfiguracji i jednego wywołania metody.
-
Install IronOCR with NuGet Package Manager
PM > Install-Package IronOcr -
Skopiuj i uruchom ten fragment kodu.
var hocr = new IronTesseract { Configuration = { RenderHocr = true } }.Read(new OcrInput("image.png")).SaveAsHocrString(); -
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 bibliotekę C#, aby zapisywać wyniki jako hOCR w pliku HTML
- Przygotuj docelowy obraz i dokument PDF
- Ustaw właściwość RenderHocr na true
- Użyj metody
SaveAsHocrFile,aby wygenerować plik HTML - Użyj metody
SaveAsHocrString,aby wygenerować ciąg znaków HTML
Czym jest hOCR i dlaczego warto z niego korzystać?
hOCR, co oznacza "OCR oparty na HTML", to format pliku używany do przedstawiania wyników optycznego rozpoznawania znaków (OCR) w uporządkowany sposób. Pliki hOCR są zapisane w formacie HTML i umożliwiają przechowywanie rozpoznanego tekstu, informacji o układzie oraz współrzędnych każdego rozpoznanego znaku w obrazie lub dokumencie. Ta ustrukturyzowana forma sprawia, że hOCR jest szczególnie przydatny w aplikacjach wymagających danych o położeniu tekstu, takich jak indeksowanie dokumentów, narzędzia ułatwiające dostęp oraz zaawansowane implementacje wyszukiwania.
Format hOCR jest niezbędny dla programistów tworzących aplikacje, które muszą rozumieć nie tylko, jaki tekst jest obecny, ale także gdzie ten tekst pojawia się w oryginalnym dokumencie. Te informacje przestrzenne umożliwiają takie funkcje, jak podświetlanie tekstu w celu debugowania, tworzenie klikalnych nakładek na oryginalnych obrazach oraz zachowanie integralności układu dokumentu podczas konwersji zeskanowanych dokumentów do formatów dostępnych. W przypadku aplikacji Enterprise przetwarzających zeskanowane dokumenty, hOCR stanowi podstawę dla zaawansowanych procesów rozumienia dokumentów i ekstrakcji danych.
Jak wyeksportować wyniki OCR jako pliki hOCR?
Aby wyeksportować wynik jako hOCR, należy najpierw włączyć właściwość Configuration.RenderHocr, ustawiając ją na true. Po uzyskaniu obiektu OcrResult z metody Read, użyj metody SaveAsHocrFile, aby wyeksportować wynik OCR jako HTML. Ta metoda generuje plik HTML zawierający wynik odczytu dokumentów wejściowych. Poniższy kod ilustruje wykorzystanie następującego pliku
.
:path=/static-assets/ocr/content-code-examples/how-to/html-export-export-html.cs
using IronOcr;
// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();
// Enable render as hOCR
ocrTesseract.Configuration.RenderHocr = true;
// Add image
using var imageInput = new OcrImageInput("Potter.tiff");
imageInput.Title = "Html Title";
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);
// Export as HTML
ocrResult.SaveAsHocrFile("result.html");
Imports IronOcr
' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()
' Enable render as hOCR
ocrTesseract.Configuration.RenderHocr = True
' Add image
Dim imageInput = New OcrImageInput("Potter.tiff")
imageInput.Title = "Html Title"
' Perform OCR
Dim ocrResult As OcrResult = ocrTesseract.Read(imageInput)
' Export as HTML
ocrResult.SaveAsHocrFile("result.html")
Klasa OcrInput zapewnia szerokie możliwości przygotowania obrazów przed przetwarzaniem OCR. Można stosować filtry, określać interesujące obszary oraz obsługiwać różne formaty danych wejściowych, w tym wielostronicowe pliki TIFF. W przypadku ekstrakcji tekstu z plików PDF za pomocą OCR stosuje się te same metody eksportu hOCR.
Dlaczego ustawienie RenderHocr ma znaczenie?
Ustawienie właściwości RenderHocr na true instruuje IronOCR, aby generował niezbędną strukturę hOCR podczas procesu OCR. Bez tej konfiguracji metody SaveAsHocrFile i SaveAsHocrString nie wygenerują poprawnie sformatowanego wyjścia hOCR z zachowaniem układu. Ta konfiguracja musi być ustawiona przed wywołaniem metody Read, ponieważ wpływa na to, jak silnik Tesseract przetwarza i strukturyzuje dane wyjściowe.
Format hOCR zachowuje kluczowe metadane, w tym:
- Prostokąty ograniczające na poziomie znaków
- Wyniki pewności słów WORD
- Struktura wierszy i akapitów
- Wymiary strony i informacje o rozdzielczości (DPI)
- Charakterystyka czcionki, jeśli jest wykrywalna
Te metadane są szczególnie przydatne podczas wdrażania procesów przetwarzania obrazu lub tworzenia systemów, które muszą rozumieć strukturę dokumentu wykraczającą poza proste wyodrębnianie tekstu.
Jakie typy plików obsługują eksport hOCR?
IronOCR obsługuje eksport hOCR z różnych formatów obrazów, w tym TIFF, PNG, JPEG, BMP i GIF. Dokumenty PDF można również przetwarzać i eksportować jako hOCR, zachowując informacje o tekście i układzie każdej strony w strukturze HTML. Biblioteka płynnie obsługuje zarówno obrazy jednostronicowe, jak i dokumenty wielostronicowe.
Aby uzyskać optymalne wyniki w przypadku różnych typów plików:
- TIFF: Idealny do skanowanych dokumentów, obsługuje przetwarzanie wielostronicowe
- PDF: Doskonały do treści mieszanych (tekst i obrazy)
- PNG/JPEG: Najlepsze do zdjęć lub zrzutów ekranu wymagających OCR
- BMP: Nieskompresowany format odpowiedni do skanów o wysokiej jakości
W przypadku specjalistycznych typów dokumentów, takich jak paszporty lub tablice rejestracyjne, format hOCR pomaga zachować relacje przestrzenne między różnymi elementami tekstowymi, ułatwiając wyodrębnianie określonych pól na podstawie ich położenia.
Jak mogę wyeksportować wyniki OCR jako ciągi znaków HTML?
Używając tego samego przykładowego obrazu TIFF, użyj metody SaveAsHocrString, aby wyeksportować wynik OCR jako łańcuch HTML. Ta metoda zwraca ciąg znaków HTML.
:path=/static-assets/ocr/content-code-examples/how-to/html-export-export-html-string.cs
// Export as HTML string
string hocr = ocrResult.SaveAsHocrString();
' Export as HTML string
Dim hocr As String = ocrResult.SaveAsHocrString()
Wynikowy ciąg znaków zawiera kompletny znacznik hOCR, który można dalej przetwarzać, przechowywać w bazach danych lub integrować z aplikacjami internetowymi. Takie podejście jest szczególnie przydatne podczas tworzenia systemów przeszukiwalnych plików PDF lub wdrażania niestandardowych rozwiązań do indeksowania dokumentów. Dla programistów pracujących w 125 językach międzynarodowych format hOCR zachowuje atrybuty tekstu specyficzne dla danego języka oraz informacje o kierunku czytania.
Kiedy należy używać wyjścia w postaci ciągu znaków zamiast plików?
Wyjście w postaci ciągu znaków jest idealne, gdy trzeba przetwarzać lub modyfikować dane hOCR w pamięci, integrować je z usługami internetowymi lub przechowywać wyniki w bazie danych. Takie podejście pozwala uniknąć zależności od systemu plików i umożliwia dynamiczne generowanie kodu HTML dla aplikacji internetowych. Typowe przypadki użycia obejmują:
- Integracja z interfejsem API: zwracanie danych hOCR bezpośrednio w odpowiedziach API
- Przechowywanie w bazie danych: Przechowuj wyniki OCR wraz z metadanymi dokumentów
- Przetwarzanie w czasie rzeczywistym: przetwarzaj wyniki bez obciążenia operacjami wejścia/wyjścia na dysku
- Cloud Functions: Praca w środowiskach bezserwerowych z ograniczonym dostępem do plików
- Systemy zarządzania treścią: Integracja wyników OCR z istniejącymi procesami obiegu dokumentów
W przypadku aplikacji wymagających śledzenia postępów, wyjście w postaci ciągów znaków umożliwia natychmiastowe przetwarzanie częściowych wyników w miarę ich udostępniania. Jest to szczególnie przydatne podczas wdrażania wielowątkowego przetwarzania OCR, w którym wiele dokumentów jest przetwarzanych jednocześnie.
Jak przetworzyć wiele stron na ciągi znaków HTML?
Podczas pracy z dokumentami wielostronicowymi, SaveAsHocrString konsoliduje wszystkie strony w pojedynczy łańcuch HTML z poprawnymi podziałami stron. Treść każdej strony jest zawarta w odpowiednich elementach hOCR, co pozwala zachować strukturę dokumentu i granice stron.
// Processing multi-page documents
using var multiPageInput = new OcrPdfInput("multi-page-document.pdf");
multiPageInput.Title = "Multi-Page Document";
// Configure for hOCR output
IronTesseract tesseract = new IronTesseract();
tesseract.Configuration.RenderHocr = true;
// Read all pages
OcrResult result = tesseract.Read(multiPageInput);
// Export as single HTML string with all pages
string fullHocr = result.SaveAsHocrString();
// Or process page by page
foreach (var page in result.Pages)
{
string pageHocr = page.SaveAsHocrString();
// Process individual page hOCR
}
// Processing multi-page documents
using var multiPageInput = new OcrPdfInput("multi-page-document.pdf");
multiPageInput.Title = "Multi-Page Document";
// Configure for hOCR output
IronTesseract tesseract = new IronTesseract();
tesseract.Configuration.RenderHocr = true;
// Read all pages
OcrResult result = tesseract.Read(multiPageInput);
// Export as single HTML string with all pages
string fullHocr = result.SaveAsHocrString();
// Or process page by page
foreach (var page in result.Pages)
{
string pageHocr = page.SaveAsHocrString();
// Process individual page hOCR
}
Imports IronOcr
' Processing multi-page documents
Using multiPageInput As New OcrPdfInput("multi-page-document.pdf")
multiPageInput.Title = "Multi-Page Document"
' Configure for hOCR output
Dim tesseract As New IronTesseract()
tesseract.Configuration.RenderHocr = True
' Read all pages
Dim result As OcrResult = tesseract.Read(multiPageInput)
' Export as single HTML string with all pages
Dim fullHocr As String = result.SaveAsHocrString()
' Or process page by page
For Each page In result.Pages
Dim pageHocr As String = page.SaveAsHocrString()
' Process individual page hOCR
Next
End Using
To podejście działa płynnie ze strumieniami PDF i obsługuje zaawansowane scenariusze, takie jak przetwarzanie określonych zakresów stron lub stosowanie różnych konfiguracji OCR do różnych stron.
Zaawansowane wskazówki dotyczące wdrażania hOCR
Jakie są najlepsze praktyki dotyczące jakości wyników hOCR?
Aby uzyskać jak najlepszą jakość wyników hOCR, warto rozważyć zastosowanie filtrów optymalizujących obraz przed przetwarzaniem:
var input = new OcrImageInput("document.png");
input.DeNoise(); // Remove image noise
input.Deskew(); // Correct image rotation
input.Scale(2); // Upscale for better recognition
IronTesseract ocr = new IronTesseract();
ocr.Configuration.RenderHocr = true;
var result = ocr.Read(input);
var input = new OcrImageInput("document.png");
input.DeNoise(); // Remove image noise
input.Deskew(); // Correct image rotation
input.Scale(2); // Upscale for better recognition
IronTesseract ocr = new IronTesseract();
ocr.Configuration.RenderHocr = true;
var result = ocr.Read(input);
Dim input As New OcrImageInput("document.png")
input.DeNoise() ' Remove image noise
input.Deskew() ' Correct image rotation
input.Scale(2) ' Upscale for better recognition
Dim ocr As New IronTesseract()
ocr.Configuration.RenderHocr = True
Dim result = ocr.Read(input)
W przypadku skanów o niskiej jakości dodatkowe etapy przetwarzania wstępnego mogą znacznie poprawić dokładność hOCR. Kreator filtrów pomaga określić optymalne kombinacje filtrów dla konkretnych typów dokumentów.
W jaki sposób struktura hOCR wspiera zaawansowane przetwarzanie?
Wygenerowany kod hOCR jest zgodny ze standardową specyfikacją, z zagnieżdżonymi elementami div reprezentującymi hierarchię dokumentu:
<div class='ocr_page' title='bbox 0 0 2480 3508'>
<div class='ocr_carea' title='bbox 156 114 2324 3395'>
<p class='ocr_par' title='bbox 157 114 2323 164'>
<span class='ocr_line' title='bbox 157 114 2323 164'>
<span class='ocr_word' title='bbox 157 114 294 161'>Hello</span>
<span class='ocr_word' title='bbox 334 119 483 161'>World</span>
</span>
</p>
</div>
</div>
<div class='ocr_page' title='bbox 0 0 2480 3508'>
<div class='ocr_carea' title='bbox 156 114 2324 3395'>
<p class='ocr_par' title='bbox 157 114 2323 164'>
<span class='ocr_line' title='bbox 157 114 2323 164'>
<span class='ocr_word' title='bbox 157 114 294 161'>Hello</span>
<span class='ocr_word' title='bbox 334 119 483 161'>World</span>
</span>
</p>
</div>
</div>
Taka struktura umożliwia precyzyjne wyodrębnianie fragmentów tekstu oraz zaawansowaną analizę dokumentów, co sprawia, że jest ona przydatna w aplikacjach wymagających przestrzennych relacji tekstowych lub zachowania układu. W przypadku ekstrakcji tabel format hOCR pomaga zachować strukturę tabelaryczną i relacje między komórkami.
Atrybuty bbox (prostokąt ograniczający) zawierają współrzędne w formacie "bbox left top right bottom", dostarczając dane o położeniu z dokładnością do pikseli dla każdego elementu tekstowego. Te informacje są kluczowe dla:
- Tworzenia interaktywnych przeglądarek dokumentów z wyborem tekstu
- Implementacji systemów redakcji, które zachowują układ
- Budowania narzędzi dostępności, które utrzymują kolejność czytania
- Rozwijania systemów porównania dokumentów
Dla programistów wymagających jeszcze bardziej szczegółowych opcji konfiguracji, szczegółowy przewodnik konfiguracyjny Tesseract dostarcza zaawansowanych ustawień, które wpływają na jakość i strukturę wyjścia hOCR.
Często Zadawane Pytania
Czym jest hOCR i dlaczego jest przydatne w aplikacjach OCR?
hOCR (HTML-based OCR) to format pliku, który przedstawia wyniki OCR w ustrukturyzowanym HTML, przechowując zarówno rozpoznany tekst, jak i informacje przestrzenne, takie jak współrzędne znaków. IronOCR wspiera eksport hOCR, co jest cenne dla aplikacji wymagających danych o pozycjach tekstu, indeksowania dokumentów, narzędzi dostępności oraz zachowania integralności układu przy przetwarzaniu skanowanych dokumentów.
Jak włączyć wyjście hOCR w mojej aplikacji OCR w C#?
Aby włączyć wyjście hOCR z IronOCR, ustaw właściwość Configuration.RenderHocr na true w instancji IronTesseract. To mówi IronOCR, aby przygotowało wyniki OCR w formacie hOCR, co pozwala na ich eksportowanie za pomocą metod SaveAsHocrFile lub SaveAsHocrString.
Jakie metody są dostępne do eksportu wyników hOCR?
IronOCR oferuje dwie metody eksportu wyników hOCR: SaveAsHocrFile(), która zapisuje wynik bezpośrednio do pliku HTML na dysku, oraz SaveAsHocrString(), która zwraca HTML hOCR jako ciąg do dalszego przetwarzania lub przechowywania w aplikacji.
Czy mogę eksportować wyniki OCR jako hOCR za pomocą jednej linii kodu?
Tak, IronOCR umożliwia jednoliniowy eksport hOCR przy użyciu łączenia metod. Możesz utworzyć instancję IronTesseract z włączonym RenderHocr, wczytać dane wejściowe i wywołać SaveAsHocrString() w jednej instrukcji: var hocr = new IronTesseract { Configuration = { RenderHocr = true } }.Read(new OcrInput("image.png")).SaveAsHocrString();
Jakiego rodzaju informacje przestrzenne hOCR zachowuje z wyników OCR?
hOCR zachowuje informacje o układzie i współrzędne każdego rozpoznanego znaku w oryginalnym obrazie lub dokumencie. Eksport hOCR IronOCR przechowuje te dane przestrzenne, umożliwiając takie funkcje jak podświetlanie tekstu do debugowania, tworzenie klikalnych nakładek na obrazach i zrozumienie, gdzie tekst pojawia się w oryginalnym dokumencie.

