Preprocessing delle scansioni e OCR strutturato

HPDFScanPreprocess accetta una Graphics.TBitmap di proprietà del chiamante e restituisce un'immagine corretta privata più geometria invertibile; HPDFScanOCRWorkflow usa un IHPDFOCREngine esistente per restituire parole mappate e layout semantico

Il profilo di accettazione fornito usa Delphi e FPC/Lazarus Windows; l'adattatore del processo OSD Tesseract usa API Windows e non fa parte del profilo documentale headless su Linux nativo

Correzioni ed evidenza

L'ordine di correzione è quad prospettico fornito dal chiamante, orientamento in senso orario e deskew ad angolo continuo, con sampling inverso bilineare e fill bianco fuori dalla regione sorgente fornita

L'orientamento esplicito supporta 0, 90, 180 e 270 gradi in senso orario; l'orientamento automatico richiede un detector e rifiuta evidenza insufficiente o malformata

HPDFScanOrientationTesseract fornisce un adattatore reale OSD Tesseract Windows usando un eseguibile esplicito e una directory tessdata contenente osd.traineddata; lancia --psm 0 -l osd --dpi 300 direttamente in un processo nascosto senza shell

La soglia default del margine di orientamento raw è 15; LastOrientationScore trattiene il punteggio Tesseract reale e la confidenza normalizzata è il punteggio diviso 15, clampata a [0, 1]; questa normalizzazione è una scala di evidenza, non una probabilità calibrata

Il deskew automatico campiona i pixel scuri reali e confronta la concentrazione della proiezione per righe su un range di angoli limitato; il range default è ±10 gradi a passi di 0,25 gradi, con soglia di evidenza 0,2; evidenza insufficiente conserva l'angolo esplicito e registra DeskewAccepted = False

Il deskew esplicito accetta qualunque angolo continuo da -180 a 180 gradi; la ricerca automatica supporta un raggio fino a 45 gradi, e il passo deve essere tra 0,1 e 5 gradi

La correzione prospettica richiede un quad convesso finito ordinato alto-sinistra, alto-destra, basso-destra, basso-sinistra dentro il raster sorgente e dimensioni target esplicite; il rilevamento automatico del quad non è fornito

Pulizia e budget finiti

I default normalizzano le ombre locali per tile, rimuovono righe e colonne di bordo scure contigue e preservano l'output in scala di grigi; la denoising mediana 3 per 3 e l'output binario opzionali possono essere abilitati

La pulizia rende bianchi i pixel dei bordi senza cambiare l'origine delle coordinate; RemovedBorderPixels riporta i pixel coinvolti e i raster uniformemente vuoti saltano l'OCR

I limiti default sono 32768 pixel per dimensione, 16777216 pixel input e output, una stima conservativa di allocazione di lavoro di 512 MiB, 500000000 di unità di lavoro e 20000 campioni di deskew; i pixel sorgente devono inoltre stare in un indice di intero con segno

La stima copre i cloni raster posseduti, gli array in scala di grigi, lo storage output, i campioni e gli istogrammi; non limita la bitmap sorgente del chiamante, le allocazioni grafiche del sistema operativo o un engine OCR esterno arbitrario

L'OSD Tesseract limita separatamente i pixel e stdout/stderr combinati, interroga cancellazione e dimensione output ogni 25 millisecondi e termina il figlio a timeout, cancellazione o overflow dell'output; il timeout deve essere tra 1 e 3600000 millisecondi e il limite output tra 1024 e 1048576 byte

Ownership e rollback

HPDFPreprocessScan non modifica mai la bitmap sorgente; al successo il chiamante libera OutputBitmap, mentre al fallimento restituisce nil e uno stato con evidenza diagnostica

Un detector riceve una copia privata; la cancellazione è cooperativa ai confini di riga, angolo candidato, attesa processo e elaborazione parole; un engine OCR fornito deve rispettare il token della richiesta e i propri limiti di processo e output

Il workflow azzera parole, layout semantico e quad delle righe dopo ogni fallimento; l'adattatore mantiene uno stato last-report mutabile e va usato in modo seriale

Geometria e OCR strutturato

Le coordinate raster usano un'origine in alto a sinistra e i centri dei pixel; la matrice omogenea agisce sul vettore colonna (X, Y, 1), con divisione per la terza coordinata; la moltiplicazione di trasformazioni A × B applica prima B

SourceToOutput e OutputToSource preservano l'operazione affine o proiettiva completa; usate record input e output separati quando impiegate gli helper pubblici

Il wrapper OCR fornisce all'engine il raster corretto con bounds PDF temporanei non ruotati, valida rettangoli di parole UTF-16 e finiti, scarta le parole con confidenza insufficiente o non mappabili e riporta rettangoli, baseline e quattro angoli al raster originale

PageQuad e i bounds semantici tengono conto del page box PDF in ingresso, del DPI e della rotazione di pagina di 0, 90, 180 o 270 gradi; l'ordine di lettura viene analizzato nel frame corretto verticale prima che la geometria venga rimappata indietro

Gli intervalli di caratteri vengono interpolati dai box delle parole OCR e restano approssimativi; i quadrilateri delle righe preservano rotazione e prospettiva che i bounds allineati agli assi non possono rappresentare

HPDFScanOCRLayoutToDOM crea uno stack editabile di proprietà in ordine analitico, usando nodi heading per i titoli rilevati e nodi testo per le altre righe

Esempio

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;

Verifica

La suite Delphi non-GUI controlla orientamento esplicito, angoli continui reversibili fino a ±179,25 gradi, orientamento automatico Tesseract reale 0/90/180/270 e rifiuto dei vuoti, correzione reale dell'inclinazione automatica a cinque gradi, pulizia di rumore e ombre, angoli prospettici, budget, cancellazione, immutabilità della sorgente e OCR inglese reale su sei varianti raster inclusa una scansione a 37,5 gradi

Ogni angolo di parola accettato nei casi OCR reali viene rimappato indietro attraverso la trasformazione inversa e controllato entro 1e-6 pixel del raster corretto; la suite smoke FPC esegue inoltre deskew reale, cancellazione, limiti di allocazione, OSD a 180 gradi e su vuoti e layout OCR inglese reale

Gli header pubblici generati compilano sotto C++Builder Win32 e Win64x, inclusi report OCR gestiti, argomenti default delle interfacce, trasformazioni geometriche e ownership del DOM

Impostate HOTPDF_TESSERACT_EXE, HOTPDF_TESSDATA per il modello OSD e HOTPDF_OCR_TESSDATA per il modello inglese per abilitare la verifica con engine esterni; le impostazioni runtime opzionali mancanti non stabiliscono accettazione OCR reale