Scan preprocessing and structured OCR

HPDFScanPreprocess přijme bitmapu Graphics.TBitmap vlastněnou volajícím a vrátí soukromý opravený obrázek plus invertovatelnou geometrii; HPDFScanOCRWorkflow použije stávající IHPDFOCREngine a vrátí zmapovaná slova i sémantický layout

Dodávaný akceptační profil používá Delphi a Windows FPC/Lazarus; adaptér procesu Tesseract OSD používá Windows API a nepatří do nativního headless dokumentového profilu Linuxu

Korekce a důkazy

Pořadí korekcí je dodaný perspektivní čtyřúhelník volajícího, orientace po směru hodinových ručiček a korekce naklonění spojitým úhlem, s bilineárním inverzním vzorkováním a bílou výplní mimo dodanou zdrojovou oblast

Explicitní orientace podporuje 0, 90, 180 a 270 stupňů po směru hodinových ručiček; automatická orientace vyžaduje detektor a odmítá nedostatečné či poškozené důkazy

HPDFScanOrientationTesseract dodá skutečný adaptér Windows Tesseract OSD s explicitním spustitelným souborem a adresářem tessdata obsahujícím osd.traineddata; spustí --psm 0 -l osd --dpi 300 přímo ve skrytém procesu, bez shellu

Výchozí práh marže surové orientace je 15; LastOrientationScore si uchová skutečné skóre Tesseractu a normalizovaná jistota je skóre dělené 15, oříznuté do [0, 1]; ta normalizace je škálou důkazů, nikoli kalibrovanou pravděpodobností

Automatický deskew vzorkuje skutečné tmavé pixely a porovnává koncentraci projekcí řádků přes ohraničené úhlové rozpětí; výchozí rozpětí je ±10 stupňů v krocích 0.25 stupně, s prahem důkazů 0.2; nedostatečné důkazy ponechají explicitní úhel a zaznamenají DeskewAccepted = False

Explicitní deskew přijme jakýkoli spojitý úhel od -180 do 180 stupňů; automatické hledání podporuje poloměr až 45 stupňů a krok musí být mezi 0.1 a 5 stupni

Korekce perspektivy vyžaduje konečný konvexní čtyřúhelník uspořádaný top-left, top-right, bottom-right, bottom-left uvnitř zdrojového rasteru i explicitní cílové rozměry; automatická detekce čtyřúhelníku se neposkytuje

Úklid a konečné rozpočty

Defaulty normalizují stíny lokální po dlaždicích, odstraní souvislé tmavé okrajové řádky a sloupce a zachovají grayscale výstup; volitelné 3 krát 3 mediánové odšumění i binární výstup lze zapnout

Úklid vybělí hraniční pixely, aniž by změnil počátek souřadnic; RemovedBorderPixels reportuje dotčené pixely a rovnoměrně prázdné rastery OCR přeskočí

Defaultní meze jsou 32768 pixelů na dimenzi, 16777216 vstupních i výstupních pixelů, konzervativní odhad pracovní alokace 512 MiB, 500000000 pracovních jednotek a 20000 deskew vzorků; zdrojové pixely se navíc musí vejít do indexu znaménkového celého čísla

Odhad pokrývá vlastněné rastrové kopie, grayscale pole, výstupní úložiště, vzorky i histogramy; nezastropuje zdrojovou bitmapu volajícího, grafické alokace operačního systému ani libovolný externí OCR engine

Tesseract OSD samostatně ohraničuje pixely i kombinované stdout/stderr, dotazuje zrušení i velikost výstupu každých 25 milisekund a při timeoutu, zrušení či přetečení výstupu podřízený proces ukončí; timeout musí být mezi 1 a 3600000 milisekundami a limit výstupu mezi 1024 a 1048576 bajty

Vlastnictví a rollback

HPDFPreprocessScan zdrojovou bitmapu nikdy neupraví; při úspěchu uvolní volající OutputBitmap, zatímco selhání vrátí nil a status s diagnostickými důkazy

Detektor dostane soukromou kopii; zrušení je kooperativní na hranicích řádků, kandidátních úhlů, čekání na proces i zpracování slov; dodaný OCR engine musí respektovat token žádosti i vlastní limity procesu i výstupu

Workflow po každém selhání vymaže slova, sémantický layout i čtyřúhelníky řádků; adaptér drží měnitelný stav posledního reportu a měl by se používat sériově

Geometrie a strukturované OCR

Rastrové souřadnice používají počátek vlevo nahoře a středy pixelů; homogenní matice působí na sloupcový vektor (X, Y, 1), s dělením jeho třetí souřadnicí; násobení transformací A × B aplikuje nejdřív B

SourceToOutput a OutputToSource zachovávají kompletní afinní či projektivní operaci; při použití veřejných helperů mapujte oddělené vstupní i výstupní záznamy

OCR wrapper dodá engine opravený raster s neotočenými dočasnými PDF mezemi, validuje UTF-16 i konečné obdélníky slov, zahodí slova s nedostatečnou jistotou či nezmapovatelná a zmapuje obdélníky, baselines i čtyři rohy zpět na původní raster

PageQuad i sémantické meze počítají s příchozím page boxem PDF, DPI i rotací stránky 0, 90, 180 či 270 stupňů; pořadí čtení se analyzuje v opraveném vzpřímeném rámci, dřív než se geometrie zmapuje zpět

Znakové intervaly se interpolují z boxů OCR slov a zůstávají přibližné; čtyřúhelníky řádků zachovávají rotaci a perspektivu, kterou meze zarovnané s osami zreprezentovat nedokážou

HPDFScanOCRLayoutToDOM vytvoří vlastněný upravitelný strom v analyzovaném pořadí, s heading uzly pro zjištěná nadpisy a textovými uzly pro ostatní řádky

Příklad

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;

Verifikace

Non-GUI Delphi sada kontroluje explicitní orientaci, vratné spojité úhly přes ±179.25 stupně, skutečnou automatickou orientaci 0/90/180/270 od Tesseractu i odmítání prázdných, skutečnou automatickou korekci pětistupňového naklonění, úklid šumu a stínů, rohy perspektivy, rozpočty, zrušení, neměnnost zdroje i skutečné anglické OCR na šesti rastrových variantách včetně skenu 37.5 stupně

Každý přijatý roh slova ve skutečných OCR case se zmapuje zpět inverzní transformací a zkontroluje v rámci 1e-6 opravených rastrových pixelů; FPC smoke sada navíc provede skutečný deskew, zrušení, alokační limity, 180stupňové i prázdné OSD i skutečný anglický OCR layout

Generované veřejné hlavičky se kompilují pod C++Builder Win32 a Win64x, tedy i se spravovanými OCR reporty, defaultními argumenty rozhraní, geometrickými transformacemi i vlastnictvím DOM

Pro zapnutí verifikace externím engine nastavte HOTPDF_TESSERACT_EXE, HOTPDF_TESSDATA pro OSD model a HOTPDF_OCR_TESSDATA pro anglický model; chybějící volitelná runtime nastavení nezakládají skutečnou OCR akceptaci