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