Scanpreprocessing en gestructureerde OCR
HPDFScanPreprocess accepteert een Graphics.TBitmap in caller-eigendom en geeft een privé gecorrigeerde afbeelding plus omkeerbare geometrie terug; HPDFScanOCRWorkflow gebruikt een bestaande IHPDFOCREngine om gemapte woorden en semantische layout terug te geven
Het meegeleverde acceptatieprofiel gebruikt Delphi en Windows FPC/Lazarus; de Tesseract OSD-proces-adapter gebruikt Windows-API's en is geen deel van het native Linux headless-documentprofiel
Correcties en bewijs
De correctievolgorde is door de aanroeper geleverd perspective quad, klokgewijze oriëntatie en continue-hoek-deskew, met bilineaire inverse sampling en witte vulling buiten de meegeleverde bronregio
Expliciete oriëntatie ondersteunt 0, 90, 180 en 270 graden met de klok mee; automatische oriëntatie vraagt een detector en verwerpt ontoereikend of misvormd bewijs
HPDFScanOrientationTesseract levert een echte Windows Tesseract OSD-adapter met een expliciete executable en een tessdata-directory met osd.traineddata; hij start --psm 0 -l osd --dpi 300 direct in een verborgen proces zonder shell
De default raw orientatie-marge-drempel is 15; LastOrientationScore houdt de echte Tesseract-score vast en genormaliseerde confidence is de score gedeeld door 15, afgeklemd op [0, 1]; deze normalisatie is een bewijsschaal, geen gekalibreerde kans
Automatische deskew samplet echte donkere pixels en vergelijkt rij-projectie-concentratie over een begrensd hoekbereik; het defaultbereik is ±10 graden in stappen van 0.25 graad, met een bewijsdrempel van 0.2; ontoereikend bewijs houdt de expliciete hoek aan en registreert DeskewAccepted = False
Expliciete deskew accepteert elke continue hoek van -180 tot en met 180 graden; automatisch zoeken ondersteunt een straal tot 45 graden, en de stap moet tussen 0.1 en 5 graden liggen
Perspectiefcorrectie vraagt een eindige convexe quad geordend top-left, top-right, bottom-right, bottom-left binnen het bronraster en expliciete doeldimensies; automatische quad-detectie wordt niet geleverd
Opschonen en eindige budgetten
Defaults normaliseren tegel-lokale schaduwen, verwijderen aaneengesloten donkere randrijen en -kolommen en behouden grijswaarden-uitvoer; optionele 3 bij 3 mediane denoising en binary-uitvoer kunnen worden aangezet
Oplossen maakt randpixels wit zonder de coördinaatoorsprong te wijzigen; RemovedBorderPixels rapporteert getroffen pixels en uniforme lege rasters slaan OCR over
Defaultgrenzen zijn 32768 pixels per dimensie, 16777216 invoer- en uitvoerpixels, een conservatieve 512 MiB working-allocatie-schatting, 500000000 work units en 20000 deskew-samples; bronpixels moeten daarnaast in een getekende integer-index passen
De schatting dekt owned raster-klonen, grijswaarden-arrays, uitvoeropslag, samples en histogrammen; ze klemt de bronbitmap van de aanroeper, graphics-allocaties van het besturingssysteem of een willekeurige externe OCR-engine niet af
Tesseract OSD begrenzt apart pixels en gecombineerde stdout/stderr, pollt annulering en uitvoergrootte elke 25 milliseconden en beëindigt het child bij timeout, annulering of uitvoeroverloop; timeout moet tussen 1 en 3600000 milliseconden liggen en de uitvoerlimiet tussen 1024 en 1048576 bytes
Eigendom en rollback
HPDFPreprocessScan bewerkt nooit de bronbitmap; bij succes geeft de aanroeper OutputBitmap vrij, terwijl falen nil teruggeeft met een status en diagnostisch bewijs
Een detector ontvangt een privé-kopie; annulering is coöperatief op rij-, candidate-hoek-, proces-wacht- en woordverwerkingsgrenzen; een meegeleverde OCR-engine moet de request-token honoreren plus diens eigen proces- en uitvoerlimieten
De workflow wist woorden, semantische layout en regel-quads na elke fout; de adapter houdt muteerbare last-report-status vast en moet serieel worden gebruikt
Geometrie en gestructureerde OCR
Rastercoördinaten gebruiken een upper-left-oorsprong en pixelcentra; de homogene matrix werkt op de kolomvector (X, Y, 1), met deling door diens derde coördinaat; transformatievermenigvuldiging A × B past B eerst toe
SourceToOutput en OutputToSource behouden de complete affiene of projectieve operatie; map aparte invoer- en uitvoerrecords wanneer je de publieke helpers gebruikt
De OCR-wrapper levert de gecorrigeerde raster met ongeroteerde tijdelijke PDF-bounds aan de engine, valideert UTF-16 en eindige woordrechthoeken, laat ontoereikende-confidence of niet-mapbare woorden vallen en mapt rechthoeken, baselines en vier hoeken terug naar de originele raster
PageQuad en semantische bounds houden rekening met de inkomende PDF-paginabox, DPI en paginarotatie van 0, 90, 180 of 270 graden; leesvolgorde wordt geanalyseerd in het gecorrigeerde upright-frame voordat geometrie terug wordt gemapt
Character-intervallen worden geïnterpoleerd vanuit OCR-woordboxen en blijven benaderend; regel-quadrilaterals behouden rotatie en perspectief die axis-aligned bounds niet kunnen representeren
HPDFScanOCRLayoutToDOM maakt een owned bewerkbare stack aan in geanalyseerde volgorde, met heading-nodes voor gedetecteerde headings en tekstnodes voor andere regels
Voorbeeld
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;
Verificatie
De niet-GUI Delphi-suite checkt expliciete oriëntatie, omkeerbare continue hoeken tot ±179.25 graden, echte Tesseract automatische 0/90/180/270-oriëntatie en blank-rejectie, echte automatische scheefstands-correctie van vijf graden, ruis- en schaduwopruiming, perspectiefhoeken, budgetten, annulering, bronimmutabiliteit en echte Engelse OCR op zes raster-varianten inclusief een scan van 37.5 graden
Elke geaccepteerde woordhoek in de echte OCR-cases wordt terug gemapt via de inverse transformatie en gecheckt binnen 1e-6 gecorrigeerde-rasterpixels; de FPC smoke-suite voert daarnaast echte deskew, annulering, allocatielimieten, 180-graden en lege OSD en echte Engelse OCR-layout uit
De gegenereerde publieke headers compileren onder C++Builder Win32 en Win64x, inclusief managed OCR-rapporten, default interface-argumenten, geometrietransforms en DOM-eigendom
Zet HOTPDF_TESSERACT_EXE, HOTPDF_TESSDATA voor het OSD-model en HOTPDF_OCR_TESSDATA voor het Engelse model om externe-engine-verificatie aan te zetten; ontbrekende optionele runtime-instellingen leggen geen echte OCR-acceptatie vast