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