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