Skannförbehandling och strukturerad OCR

HPDFScanPreprocess tar en Graphics.TBitmap som anroparen äger och returnerar en privat korrigerad bild plus inverterbar geometri; HPDFScanOCRWorkflow använder en befintlig IHPDFOCREngine för att returnera mappade ord och semantisk layout

Den medföljande acceptansprofilen använder Delphi och Windows FPC/Lazarus; Tesseract OSD-processadaptorn använder Windows-API:er och ingår inte i native Linux-profilen för headless-dokument

Korrigeringar och belägg

Korrigeringsordningen är perspektivfyrsiding från anroparen, medurs orientering och kontinuerlig deskew-vinkel, med bilinjär invers sampling och vit fyllnad utanför den medgivna källregionen

Explicit orientering stöder 0, 90, 180 och 270 grader medurs; automatisk orientering kräver en detektor och avvisar otillräckliga eller felformade belägg

HPDFScanOrientationTesseract tillhandahåller en verklig Windows Tesseract OSD-adapter som använder en explicit körbar fil och en tessdata-katalog med osd.traineddata; den startar --psm 0 -l osd --dpi 300 direkt i en dold process utan skal

Standardtröskeln för rå orienteringsmarginal är 15; LastOrientationScore behåller den verkliga Tesseract-poängen och normaliserad konfidens är poängen delat med 15, klammad till [0, 1]; denna normalisering är en beläggskala, inte en kalibrerad sannolikhet

Automatisk deskew samplar verkliga mörka pixlar och jämför radprojektionens koncentration över ett avgränsat vinkelintervall; standardintervallet är ±10 grader i steg om 0,25 grad, med en beläggströskel på 0,2; otillräckliga belägg behåller den explicita vinkeln och registrerar DeskewAccepted = False

Explicit deskew accepterar valfri kontinuerlig vinkel från -180 till 180 grader; automatisk sökning stöder en radie upp till 45 grader, och steget måste ligga mellan 0,1 och 5 grader

Perspektivkorrigering kräver en ändlig konvex fyrsiding, ordnad övre vänster, övre höger, nedre höger, nedre vänster, inne i källrastern plus explicita måldimensioner; automatisk fyrsidingdetektering tillhandahålls inte

Städning och ändliga budgeter

Standardinställningarna normaliserar skuggor lokalt per bricka, tar bort sammanhängande mörka kant- och kolumnrader samt bevarar gråskaleutdata; valfri medianbrusreducering 3 gånger 3 och binär utdata kan aktiveras

Städningen vitar kantpixlar utan att ändra koordinatorigo; RemovedBorderPixels redovisar påverkade pixlar och likformigt tomma raster hoppar över OCR

Standardgränserna är 32768 pixlar per dimension, 16777216 in- och utdatapixlar, en konservativ uppskattad arbetsallokering på 512 MiB, 500000000 arbetsenheter och 20000 deskew-sample; källpixlar måste dessutom rymmas i ett signerat heltalsindex

Uppskattningen omfattar egna rasterkloner, gråskalearrayer, utdatalagring, sample och histogram; den sätter inget tak för anroparens källbitmapp, operativsystemets grafikallokeringar eller en godtycklig extern OCR-motor

Tesseract OSD begränsar separat pixlar och kombinerad stdout/stderr, pollar avbrott och utdatastorlek var 25:e millisekund och avslutar barnprocessen vid timeout, avbrott eller utdataöverskridande; timeout måste ligga mellan 1 och 3600000 millisekunder och utdatagränsen mellan 1024 och 1048576 byte

Ägande och återställning

HPDFPreprocessScan redigerar aldrig källbitmappen; vid lyckat resultat frigör anroparen OutputBitmap, medan fel returnerar nil och en status med diagnostiska belägg

En detektor får en privat kopia; avbrott är kooperativa vid gränser för rader, kandidatvinklar, processväntan och ordbehandling; en tillhandahållen OCR-motor måste respektera request-token och sina egna gränser för process och utdata

Arbetsflödet rensar ord, semantisk layout och radfyrsidingar efter varje fel; adaptorn har ett föränderligt tillstånd för senaste rapporten och bör användas seriellt

Geometri och strukturerad OCR

Rasterkoordinater använder ett origo i övre vänster och pixelcentrum; den homogena matrisen verkar på kolonnvektorn (X, Y, 1), med division med dess tredje koordinat; transformationsmultiplikation A × B tillämpar B först

SourceToOutput och OutputToSource bevarar hela den affina eller projektiva operationen; mappa separata in- och utdataposter när de publika hjälpfunktionerna används

OCR-omslagningen ger motorn den korrigerade rastern med oroterade tillfälliga PDF-gränser, validerar UTF-16 och ändliga ordrektanglar, slänger ord med otillräcklig konfidens eller utan mappning och mappar rektanglar, baslinjer och fyra hörn tillbaka till originalrastern

PageQuad och semantiska gränser beaktar den inkommande PDF-sidrutan, DPI och sidrotation på 0, 90, 180 eller 270 grader; läsordningen analyseras i den korrigerade upprätta ramen innan geometrin mappas tillbaka

Teckenintervall interpoleras från OCR-ordrutor och förblir approximativa; radfyrsidingar bevarar rotation och perspektiv som axeljusterade gränser inte kan representera

HPDFScanOCRLayoutToDOM skapar en ägd redigerbar stack i analyserad ordning, med rubriknoder för upptäckta rubriker och textnoder för övriga rader

Exempel

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;

Verifiering

Den icke-GUI-baserade Delphi-sviten kontrollerar explicit orientering, reversibla kontinuerliga vinklar upp till ±179,25 grader, verklig Tesseract-automatik för 0/90/180/270-orientering och avvisning av tomma sidor, verklig automatisk snedrätning på fem grader, brus- och skuggstädning, perspektivhörn, budgeter, avbrott, källans oföränderlighet samt verklig engelsk OCR på sex rastervarianter, inklusive en skanning på 37,5 grader

Varje accepterat ordhörn i de verkliga OCR-fallen mappas tillbaka via den inversa transformationen och kontrolleras inom 1e-6 korrigerade rasterpixlar; FPC-röktestsviten kör dessutom verklig deskew, avbrott, allokeringagränser, OSD med 180 grader och tom bild samt verklig engelsk OCR-layout

De genererade publika headerfilerna kompilerar under C++Builder Win32 och Win64x, inklusive hanterade OCR-rapporter, standardargument i gränssnitt, geometritransformationer och DOM-ägande

Sätt HOTPDF_TESSERACT_EXE, HOTPDF_TESSDATA för OSD-modellen och HOTPDF_OCR_TESSDATA för den engelska modellen för att aktivera verifiering med extern motor; saknade valfria körtidsinställningar ger ingen verklig OCR-acceptans