Scan-forbehandling og struktureret OCR
HPDFScanPreprocess accepterer en kalder-ejet Graphics.TBitmap og returnerer et privat korrigeret billede plus inverterbar geometri; HPDFScanOCRWorkflow bruger en eksisterende IHPDFOCREngine til at returnere afbildede ord og semantisk layout
Den medfølgende acceptprofil bruger Delphi og Windows FPC/Lazarus; Tesseract OSD-proces-adapteren bruger Windows API'er og er ikke en del af den native Linux headless dokumentprofil
Korrektioner og evidence
Korrektionsrækkefølgen er kalder-leveret perspektiv-firkant, med urets orientation og kontinuert vinkel deskew med bilineær invers sampling og hvid udfyldning uden for den leverede kilderegion
Eksplicit orientation understøtter 0, 90, 180 og 270 grader med uret; automatisk orientation kræver en detector og afviser utilstrækkelig eller misdannet evidence
HPDFScanOrientationTesseract leverer en rigtig Windows Tesseract OSD-adapter med en eksplicit eksekverbar og en tessdata-mappe indeholdende osd.traineddata; den starter --psm 0 -l osd --dpi 300 direkte i en skjult proces uden shell
Standard rå orienteringsmargen-tærskel er 15; LastOrientationScore beholder den faktiske Tesseract-score, og normaliseret confidence er scoren divideret med 15, klemt til [0, 1]; denne normalisering er en evidence-skala, ikke en kalibreret sandsynlighed
Automatisk deskew sampler faktiske mørke pixels og sammenligner rækkeprojektions-koncentration over et afgrænset vinkelinterval; standardintervallet er ±10 grader i 0,25-graders trin med en evidence-tærskel på 0,2; utilstrækkelig evidence beholder den eksplicitte vinkel og registrerer DeskewAccepted = False
Eksplicit deskew accepterer enhver kontinuert vinkel fra -180 til 180 grader; automatisk søgning understøtter en radius op til 45 grader, og trinnet skal være mellem 0,1 og 5 grader
Perspektivkorrektion kræver en finitær konveks firkant ordnet top-venstre, top-højre, bund-højre, bund-venstre inden for kilde-rasteret samt eksplicitte måldimensioner; automatisk firkant-detektion leveres ikke
Oprydning og endelige budgetter
Standarder normaliserer tile-lokale skygger, fjerner sammenhængende mørke kant-rækker og -kolonner og bevarer gråtone-output; valgfri 3 gange 3 median støjreduktion og binært output kan aktiveres
Oprydning hvidkant kantpixels uden at ændre koordinat-origin; RemovedBorderPixels rapporterer berørte pixels, og ensformigt tomme rasters springer OCR over
Standardgrænser er 32768 pixels pr. dimension, 16777216 input- og outputpixels, et konservativt 512 MiB arbejdsallokerings-estimat, 500000000 arbejdsunits og 20000 deskew-samples; kilde-pixels skal derudover passe i et signed integer-indeks
Estimatet dækker ejede raster-kloner, gråtone-arrays, output-lager, samples og histogrammer; det begrænser ikke kalderens kildebitmap, operativsystemets grafikallokeringer eller en vilkårlig ekstern OCR-motor
Tesseract OSD afgrænser separat pixels og kombineret stdout/stderr, poller cancellation og outputstørrelse hver 25. millisekund og terminerer barnet ved timeout, cancellation eller output-overlay; timeout skal være mellem 1 og 3600000 millisekunder, og outputgrænsen mellem 1024 og 1048576 bytes
Ejerskab og rollback
HPDFPreprocessScan redigerer aldrig kilde-bitmap; ved succes frigør kalderen OutputBitmap, mens fejl returnerer nil og en status med diagnostisk evidence
En detector modtager en privat kopi; cancellation er kooperativ ved række-, kandidatvinkel-, procesvente- og ordbehandlings-grænser; en leveret OCR-motor skal honorere anmodningstoken og egne proces- og outputgrænser
Workflowet rydder ord, semantisk layout og linjefirkanter efter enhver fejl; adapteren vedligeholder mutabel sidste-rapport-tilstand og bør bruges serielt
Geometri og struktureret OCR
Raster-koordinater bruger en øvre-venstre-origin og pixelcentre; den homogene matrix virker på kolonnevektoren (X, Y, 1) med division af dens tredje koordinat; transformmultiplikation A × B anvender B først
SourceToOutput og OutputToSource bevarer den komplette affîne eller projektive operation; afbild separate input- og output-records ved brug af de public helpers
OCR-wrapperen leverer det korrigerede raster med uroterede midlertidige PDF-beggrundskanter til motoren, validerer UTF-16 og finitære ordrektangler, dropper utilstrækkelig-confidence eller ikke-afbildbare ord og afbilder rektangler, baselines og fire hjørner tilbage til det originale raster
PageQuad og semantiske beggrundskanter tager højde for indkommende PDF-sideboks, DPI og siderotation på 0, 90, 180 eller 270 grader; læserækkefølge analyseres i den korrigerede opretstående ramme, før geometrien afbildes tilbage
Tegnintervaller interpoleres fra OCR-ordbokse og forbliver omtrentlige; linje-firkanter bevarer rotation og perspektiv, som akse-justerede beggrundskanter ikke kan repræsentere
HPDFScanOCRLayoutToDOM opretter en ejet redigerbar stak i analyseret rækkefølge med headernoder til detekterede overskrifter og tekstnoder til andre linjer
Eksempel
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;
Verificering
Den ikke-GUI Delphi-suite tjekker eksplicit orientation, reversible kontinuerte vinkler gennem ±179,25 grader, rigtig Tesseract automatisk 0/90/180/270-orientering og tom-afvisning, rigtig fem-graders automatisk skævhedskorrektion, støj- og skyggeoprydning, perspektivhjørner, budgetter, cancellation, kilde-uforanderlighed samt rigtig engelsk OCR på seks raster-varianter inklusive en 37,5-graders scan
Hvert accepteret ordhjørne i de faktiske OCR-tilfælde afbildes tilbage gennem den inverse transformation og tjekkes inden for 1e-6 korrigerede raster-pixels; FPC smoke-suitten afvikler derudover rigtig deskew, cancellation, allokeringsgrænser, 180-graders og tom OSD samt rigtig engelsk OCR-layout
De genererede public headers kompilerer under C++Builder Win32 og Win64x, inklusive managede OCR-rapporter, default interface-argumenter, geometritransformer og DOM-ejerskab
Sæt HOTPDF_TESSERACT_EXE, HOTPDF_TESSDATA til OSD-modellen og HOTPDF_OCR_TESSDATA til den engelske model for at aktivere ekstern motor-verifikation; manglende valgfrie runtime-indstillinger etablerer ikke rigtig OCR-accept