Scan ön işlemesi ve yapılandırılmış OCR
HPDFScanPreprocess, çağıranın-sahip olduğu bir Graphics.TBitmap kabul eder ve private bir düzeltilmiş görsel artı tersine-çevrilebilir geometri döndürür; HPDFScanOCRWorkflow, map edilmiş kelimeler ve semantik layout döndürmek için mevcut bir IHPDFOCREngine kullanır
Shipped kabul profili, Delphi ve Windows FPC/Lazarus kullanır; Tesseract OSD process adapter'ı, Windows API'leri kullanır ve native Linux headless belge profilinin parçası değildir
Düzeltmeler ve kanıt
Düzeltme sırası, çağıran-tarafından-sağlanan perspektif dörtgeni, saat-yönü yönelimi ve kesintisiz-açılı deskew'dur — bilinear ters örnekleme ve sağlanan kaynak bölgesinin dışında beyaz dolgu ile
Açık yönelim, saat yönünde 0, 90, 180 ve 270 derece destekler; otomatik yönelim, bir detector gerektirir ve yetersiz veya bozuk kanıtı reddeder
HPDFScanOrientationTesseract, açık bir executable ve osd.traineddata içeren bir tessdata dizini kullanan gerçek bir Windows Tesseract OSD adapter'ı sağlar; --psm 0 -l osd --dpi 300'ü shell olmadan doğrudan gizli bir process'te başlatır
Default ham yönelim margin eşiği 15'tir; LastOrientationScore, gerçek Tesseract skorunu tutar ve normalize edilmiş confidence, skoru 15'e bölerek [0, 1] ile sınırlandırılır; bu normalizasyon, kalibre edilmiş bir olasılık değil, bir kanıt ölçeğidir
Otomatik deskew, gerçek koyu pikselleri örnekler ve sınırlı bir açı aralığı üzerinden satır-projeksiyon yoğunluğunu karşılaştırır; default aralık, 0.25-derece adımlarla ±10 derecedir ve 0.2 kanıt eşiğiyle; yetersiz kanıt, açık açıyı tutar ve DeskewAccepted = False kaydeder
Açık deskew, -180'den 180 dereceye her kesintisiz açıyı kabul eder; otomatik arama, 45 dereceye kadar yarıçap destekler ve adım 0.1 ile 5 derece arasında olmalıdır
Perspektif düzeltmesi, kaynak raster içinde üst-sol, üst-sağ, alt-sağ, alt-sol sıralı sonlu bir konveks dörtgen ve açık hedef boyutları gerektirir; otomatik dörtgen tespiti sağlanmaz
Temizlik ve sonlu bütçeler
Default'lar, tile-lokal gölgeleri normalize eder, bitişik koyu edge satırlarını ve sütunlarını kaldırır ve grayscale output'u korur; opsiyonel 3 çarpı 3 median denoising ve binary output etkinleştirilebilir
Temizlik, koordinat kökenini değiştirmeden edge piksellerini beyaza çevirir; RemovedBorderPixels, etkilenen pikselleri raporlar ve tek-düzeli boş raster'lar OCR'ı atlar
Default sınırlar, boyut başına 32768 piksel, 16777216 input ve output piksel, muhafazakâr bir 512 MiB working tahsis tahmini, 500000000 work unit ve 20000 deskew örneğidir; kaynak pikselleri ayrıca işaretli bir integer indeksine sığmalıdır
Tahmin, owned raster klonlarını, grayscale array'lerini, output depolamasını, örnekleri ve histogramları kapsar; çağıranın kaynak bitmap'ini, işletim-sistemi grafik tahsislerini veya keyfi bir harici OCR engine'ini sınırlamaz
Tesseract OSD ayrıca pikselleri ve birleşik stdout/stderr'i sınırlar, cancellation'ı ve output boyutunu her 25 milisaniyede bir poll eder ve timeout, cancellation veya output taşmasıyla child'ı sonlandırır; timeout, 1 ile 3600000 milisaniye arasında ve output limiti, 1024 ile 1048576 bayt arasında olmalıdır
Ownership ve rollback
HPDFPreprocessScan, kaynak bitmap'ini asla düzenlemez; başarıda çağıran OutputBitmap'i serbest bırakır, başarısızlık ise nil ve diagnostic kanıtlı bir status döndürür
Bir detector, private bir kopya alır; cancellation, satır, aday-açı, process-bekleme ve kelime-işleme sınırlarında cooperative'tır; sağlanan bir OCR engine, istek token'ını ve kendi process ve output limitlerini onurlandırmalıdır
Workflow, her başarısızlıktan sonra kelimeleri, semantik layout'u ve satır dörtgenlerini temizler; adapter, değişebilir last-report state'i sürdürür ve seri olarak kullanılmalıdır
Geometri ve yapılandırılmış OCR
Raster koordinatları, üst-sol köken ve piksel merkezleri kullanır; homojen matrix, üçüncü koordinatına bölme ile (X, Y, 1) kolon vektörü üzerinde etki eder; transform çarpımı A × B, önce B'yi uygular
SourceToOutput ve OutputToSource, eksiksiz affine veya projektif operation'ı korur; public helper'ları kullanırken ayrı input ve output record'ları map edin
OCR wrapper, düzeltilmiş raster'i döndürülmemiş geçici PDF sınırlarıyla engine'e sağlar, UTF-16'yı ve sonlu kelime dikdörtgenlerini doğrular, yetersiz-confidence veya map edilemeyen kelimeleri düşürür ve dikdörtgenleri, baseline'ları ve dört köşeyi orijinal raster'e geri map eder
PageQuad ve semantik sınırlar, gelen PDF sayfa kutusunu, DPI'yi ve 0, 90, 180 veya 270 derecelik sayfa rotasyonunu hesaba katar; okuma sırası, geometri geri map edilmeden önce düzeltilmiş dik frame'de analiz edilir
Character aralıkları, OCR kelime kutularından enterpole edilir ve yaklaşık kalır; satır dörtgenleri, eksen-hizalı sınırların temsil edemediği rotasyonu ve perspektifi korur
HPDFScanOCRLayoutToDOM, tespit edilen başlıklar için heading node'ları ve diğer satırlar için text node'ları kullanarak analiz edilen sırayla owned bir düzenlenebilir stack oluşturur
Örnek
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;
Doğrulama
Non-GUI Delphi suite, açık yönelimi, ±179.25 dereceye kadar tersine-çevrilebilir kesintisiz açıları, gerçek Tesseract otomatik 0/90/180/270 yönelimini ve boş reddini, gerçek beş-derecelik otomatik skew düzeltmesini, gürültü ve gölge temizliğini, perspektif köşelerini, bütçeleri, cancellation'ı, kaynak değişmezliğini ve 37.5-derecelik scan dâhil altı raster varyantı üzerinde gerçek İngilizce OCR'ı denetler
Gerçek OCR case'lerindeki her kabul edilmiş kelime köşesi, ters transformasyonla geri map edilir ve 1e-6 düzeltilmiş-raster pikseli içinde denetlenir; FPC smoke suite, ayrıca gerçek deskew'i, cancellation'ı, tahsis limitlerini, 180-derece ve boş OSD'yi ve gerçek İngilizce OCR layout'unu yürütür
Üretilmiş public header'lar, yönetilen OCR raporları, default interface argümanları, geometri transform'ları ve DOM ownership dâhil C++Builder Win32 ve Win64x altında derlenir
Harici-engine doğrulamasını etkinleştirmek için OSD modeli için HOTPDF_TESSERACT_EXE'yi ve HOTPDF_TESSDATA'yı ve İngilizce model için HOTPDF_OCR_TESSDATA'yı ayarlayın; eksik opsiyonel runtime ayarları, gerçek OCR kabulü kurmaz