Jak zapisać wyniki jako hOCR w pliku HTML | IronOCR

Zapisywanie wyników OCR jako hOCR HTML w języku C# za pomocą IronOCR

This article was translated from English: Does it need improvement?
Translated
View the article in English

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.

  1. Install IronOCR with NuGet Package Manager

    PM > Install-Package IronOcr
  2. Skopiuj i uruchom ten fragment kodu.

    var hocr = new IronTesseract { Configuration = { RenderHocr = true } }.Read(new OcrInput("image.png")).SaveAsHocrString();
  3. Wdrożenie do testowania w środowisku produkcyjnym

    Rozpocznij używanie IronOCR w swoim projekcie już dziś z darmową wersją próbną

    arrow pointer


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 przykładowego pliku TIFF.

: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")
$vbLabelText   $csharpLabel

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()
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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)
$vbLabelText   $csharpLabel

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>
HTML

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.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podrę...

Czytaj więcej
Sprawdzone przez
Jeff Fritz
Jeffrey T. Fritz
Główny Menedżer Programu - Zespół .NET Community
Jeff jest również Głównym Menedżerem Programu dla zespołów .NET i Visual Studio. Jest producentem wykonawczym wirtualnej serii konferencji .NET Conf i prowadzi 'Fritz and Friends', transmisję na żywo dla deweloperów emitowaną dwa razy w tygodniu, gdzie rozmawia o technologii i pisze kod razem z widzami. Jeff pisze warsztaty, prezentacje i planuje treści dla największych wydarzeń Microsoft dla deweloperów, w tym Microsoft Build, Microsoft Ignite, .NET Conf i Microsoft MVP Summit.
Gotowy, aby rozpocząć?
Nuget Pliki do pobrania 5,571,678 | Wersja: 2026.4 just released
Still Scrolling Icon

Wciąż przewijasz?

Czy chcesz szybko dowodu? PM > Install-Package IronOcr
uruchom próbkę obserwuj, jak twój obraz staje się tekstem z możliwością wyszukiwania.