Wstępne przetwarzanie skanu i ustrukturyzowany OCR

HPDFScanPreprocess przyjmuje należący do wywołującego Graphics.TBitmap i zwraca prywatny skorygowany obraz plus odwracalną geometrię; HPDFScanOCRWorkflow używa istniejącego IHPDFOCREngine, by zwrócić zmapowane słowa i semantyczny layout

Dostarczany profil akceptacji używa Delphi i Windows FPC/Lazarus; adapter procesu OSD Tesseract używa API Windows i nie jest częścią natywnego profilu dokumentów headless Linux

Korekty i dowody

Kolejność korekt to dostarczony przez wywołującego czworokąt perspektywiczny, orientacja zgodna z ruchem wskazówek zegara i deskew o ciągłych kątach, z dwuliniowym próbkowaniem odwrotnym i białym wypełnieniem poza dostarczonym regionem źródła

Jawna orientacja wspiera 0, 90, 180 i 270 stopni zgodnie z ruchem wskazówek zegara; automatyczna orientacja wymaga detektora i odrzuca niewystarczające albo zniekształcone dowody

HPDFScanOrientationTesseract dostarcza rzeczywisty adapter OSD Tesseract Windows używając jawnego pliku wykonywalnego i katalogu tessdata zawierającego osd.traineddata; uruchamia --psm 0 -l osd --dpi 300 bezpośrednio w ukrytym procesie bez powłoki

Domyślny próg surowego marginesu orientacji to 15; LastOrientationScore zachowuje rzeczywisty wynik Tesseract, a znormalizowana pewność to wynik podzielony przez 15, ograniczony do [0, 1]; ta normalizacja to skala dowodów, a nie skalibrowane prawdopodobieństwo

Automatyczny deskew próbkuje rzeczywiste ciemne piksele i porównuje koncentrację projekcji wierszy nad ograniczonym zakresem kątów; domyślny zakres to ±10 stopni w krokach 0,25 stopnia, z progiem dowodów 0,2; niewystarczające dowody zachowują jawny kąt i zapisują DeskewAccepted = False

Jawny deskew przyjmuje dowolny ciągły kąt od -180 do 180 stopni; automatyczne wyszukiwanie wspiera promień do 45 stopni, a krok musi mieścić się między 0,1 a 5 stopni

Korekta perspektywy wymaga skończonego wypukłego czworokątu uporządkowanego lewy górny, prawy górny, prawy dolny, lewy dolny wewnątrz rastra źródła i jawnych wymiarów celu; automatyczna detekcja czworokątu nie jest dostarczana

Czyszczenie i skończone budżety

Wartości domyślne normalizują cienie lokalne dla kafli, usuwają ciągłe ciemne wiersze i kolumny krawędzi i zachowują wyjście w skali szarości; opcjonalne odszumianie medianowe 3 na 3 i wyjście binarne mogą być włączone

Czyszczenie bieli piksele krawędzi bez zmiany początku współrzędnych; RemovedBorderPixels raportuje dotknięte piksele, a jednorodne puste rastry pomijają OCR

Domyślne granice to 32768 pikseli na wymiar, 16777216 pikseli wejścia i wyjścia, konserwatywne szacowanie alokacji roboczej 512 MiB, 500000000 jednostek pracy i 20000 próbek deskew; piksele źródła muszą dodatkowo mieścić się w indeksie liczby całkowitej ze znakiem

Szacunek obejmuje posiadane klony rastrów, tablice skali szarości, przechowywanie wyjścia, próbki i histogramy; nie ogranicza bitmapy źródła wywołującego, alokacji grafiki systemu operacyjnego ani dowolnego zewnętrznego silnika OCR

Tesseract OSD osobno ogranicza piksele i łączne stdout/stderr, odpytuje anulowanie i rozmiar wyjścia co 25 milisekund i przerywa dziecko przy timeout, anulowaniu albo przepełnieniu wyjścia; timeout musi mieścić się między 1 a 3600000 milisekundami, a limit wyjścia między 1024 a 1048576 bajtami

Własność i rollback

HPDFPreprocessScan nigdy nie edytuje bitmapy źródła; przy sukcesie wywołujący zwalnia OutputBitmap, a niepowodzenie zwraca nil i status z dowodami diagnostyki

Detektor otrzymuje prywatną kopię; anulowanie jest kooperatywne na granicach wierszy, kątów kandydatów, oczekiwania procesu i przetwarzania słów; dostarczony silnik OCR musi honorować token żądania i własne limity procesu i wyjścia

Workflow czyści słowa, semantyczny layout i czworokąty linii po każdym niepowodzeniu; adapter utrzymuje mutowalny stan ostatniego raportu i powinien być używany szeregowo

Geometria i ustrukturyzowany OCR

Współrzędne rastra używają początku w lewym górnym rogu i środków pikseli; macierz jednorodna działa na wektor kolumnowy (X, Y, 1), z dzieleniem przez jego trzecią współrzędną; mnożenie transformacji A × B stosuje B pierwsze

SourceToOutput i OutputToSource zachowują kompletną operację afiniczną albo projekcyjną; mapuj osobne rekordy wejścia i wyjścia przy użyciu publicznych helperów

Wrapper OCR dostarcza silnikowi skorygowany raster z nieobróconymi tymczasowymi granicami PDF, waliduje UTF-16 i skończone prostokąty słów, odrzuca słowa o niewystarczającej pewności albo niemapywalne i mapuje prostokąty, linie bazowe i cztery narożniki z powrotem na oryginalny raster

PageQuad i granice semantyczne uwzględniają przychodzącą ramkę strony PDF, DPI i rotację strony 0, 90, 180 albo 270 stopni; kolejność czytania jest analizowana w skorygowanym wyprostowanym układzie przed mapowaniem geometrii z powrotem

Interwały znaków są interpolowane z pól słów OCR i pozostają przybliżone; czworokąty linii zachowują rotację i perspektywę, których osiowo wyrównane granice nie mogą reprezentować

HPDFScanOCRLayoutToDOM tworzy posiadany edytowalny stos w przeanalizowanej kolejności, używając węzłów nagłówków dla wykrytych nagłówków i węzłów tekstu dla pozostałych linii

Przykład

Options := HPDFDefaultScanOCRWorkflowOptions;
Options.Preprocess.AutoOrientation := True;
Detector := HPDFCreateTesseractOrientationDetector(
  TesseractExecutable, OSDModelDirectory,
  HPDFDefaultTesseractOrientationOptions);
Adapter := HPDFCreateScanPreprocessingOCREngine(
  ExistingOCREngine, Options, Detector);
if Adapter.Recognize(Request, Words, Diagnostic) then
begin
  Report := Adapter.LastReport;
  DOM := HPDFScanOCRLayoutToDOM(Report);
  try
    // Consume the editable semantic output here
  finally
    DOM.Free;
  end;
end;

Weryfikacja

Nie-GUI zestaw Delphi sprawdza jawną orientację, odwracalne ciągłe kąty do ±179,25 stopnia, rzeczywistą automatyczną orientację Tesseract 0/90/180/270 i odrzucanie pustych, rzeczywistą automatyczną korektę ukośności pięciu stopni, czyszczenie szumu i cieni, narożniki perspektywy, budżety, anulowanie, niezmienność źródła i rzeczywisty angielski OCR na sześciu wariantach rastra, włącznie ze skanem 37,5 stopnia

Każdy narożnik przyjętego słowa w rzeczywistych przypadkach OCR jest mapowany z powrotem przez transformację odwrotną i sprawdzany w 1e-6 pikseli skorygowanego rastra; zestaw smoke FPC dodatkowo wykonuje rzeczywisty deskew, anulowanie, limity alokacji, OSD 180 stopni i pusty oraz rzeczywisty angielski layout OCR

Wygenerowane publiczne nagłówki kompilują się pod C++Builder Win32 i Win64x, włącznie z zarządzanymi raportami OCR, domyślnymi argumentami interfejsu, transformacjami geometrii i własnością DOM

Ustaw HOTPDF_TESSERACT_EXE, HOTPDF_TESSDATA dla modelu OSD i HOTPDF_OCR_TESSDATA dla modelu angielskiego, by włączyć weryfikację zewnętrznego silnika; brakujące opcjonalne ustawienia runtime nie ustalają rzeczywistej akceptacji OCR