RapidOCR Yerel Model Bağdaştırıcısı

Önbelleklenmiş işlem içi ONNX çıkarımı için HPDFCreateRapidOCRDLLOCREngine ve THPDFRapidOCRDLLOptions ile RapidOCR Yerel DLL Bağdaştırıcısı'nı kullanın

Yerel bağdaştırıcı; basitleştirilmiş ve geleneksel Çince, İngilizce, Latin dilleri, Japonca, Korece, Rusça dahil Kiril dilleri, Arapça dilleri ve Devanagari dilleri için THPDFRapidOCRDLLOptions.ForLanguage ön ayarlarını sunar

HPDFRapidOCRRecognition; Delphi, C++Builder ve FPC/Lazarus Win32 ve Win64 derlemelerinde IHPDFOCREngine arayüzünü gerçekleyen bir Windows süreç bağdaştırıcısı sağlar

Python'u rapidocr ve onnxruntime ile, verilen tools/OCR/rapidocr_tsv.py köprüsüyle ve uyumlu yerel ONNX modelleriyle hazırlayın; bağdaştırıcı paket kurmaz, model, sözlük veya font indirmez

Python ayrı bir gizli süreçte çalışır; bu yüzden mimarisi çağıran uygulamadan farklı olabilir. ONNX Runtime paketi kendi Python mimarisiyle eşleşmelidir

Fabrika overload'ları

function HPDFCreateRapidOCREngine(const PythonExecutable, BridgeScript,
  ModelDirectory: string; TimeoutMilliseconds: Cardinal = 60000): IHPDFOCREngine; overload;
function HPDFCreateRapidOCREngine(const PythonExecutable, BridgeScript,
  ModelDirectory: string; const Options: THPDFRapidOCROptions): IHPDFOCREngine; overload;

Özgün timeout overload'u mevcut köprü protokolüyle uyumlu kalır ve üç varsayılan PP-OCRv4 model dosya adını kullanır; oluşturma sırasında çalıştırılabilir, köprü ve dizin yollarını denetler, model kullanılabilirliğini ise worker'da denetler

Seçenek overload'u; bağdaştırıcıyı döndürmeden önce gereken her modeli, isteğe bağlı bir sözlüğü ve yerel fontu denetler. Eksik dosyalar veya geçersiz seçenekler, tanıma başlamadan EArgumentException fırlatır

Göreli model, sözlük ve font yolları ModelDirectory'ye göre çözümlenir; mutlak yollar ayrıca hazırlanmış dosyalara işaret edebilir

RapidOCR'ın algılama, sınıflandırma ve CTC tanıma hattıyla uyumlu modeller kullanın; başka bir OCR hattından bir model farklı ön işleme gerektirebilir ve yalnızca ONNX biçiminde olduğu için seçilemez

Dile özgü model seçimi

Python süreç bağdaştırıcısı açık THPDFRapidOCROptions yollarını kullanmaya devam eder; ForLanguage yerel DLL seçenek kaydına aittir ve bir Python bağdaştırıcı metodu değildir

Yerel dil modellerini ve sözlükleri tools/Install-RapidOCRModels.ps1 -Destination C:/OCR/models -Language ch,cyrillic ile hazırlayın veya dokuz dil profilinin tamamı için -Language All'ı seçin

Yardımcı, sabitlenmiş SHA256 hash'lerini denetler ve her tanıyıcıyı eşleşen <profile>/dictionary.txt ile birlikte <profile>/recognition.onnx konumuna yerleştirir; çalışma zamanı tanıması otomatik indirme olmadan çevrimdışı kalır

Rusça için cyrillic/recognition.onnx ve cyrillic/dictionary.txt kullanın; basitleştirilmiş Çince ch profilini, geleneksel Çince ise chinese_cht'yi kullanır

Models := THPDFRapidOCROptions.Default;
Models.DetectionModel := 'ch_PP-OCRv3_det_infer.onnx';
Models.RecognitionModel := 'cyrillic/recognition.onnx';
Models.CharacterDictionary := 'cyrillic/dictionary.txt';
Models.ClassificationModel := 'ch_ppocr_mobile_v2.0_cls_infer.onnx';

Yukarıdaki algılayıcı ve sınıflandırıcı kök dosya adları, hazırlama yardımcısının paylaşılan modelleriyle eşleşir; eşleşen tanıma modelini ve sözlüğü birlikte sağlayın ve başka bir yazı sistemi gereken sayfa veya bölgeler için ayrı bir motor seçin

Seçenekler ve varsayılanlar

THPDFRapidOCROptions = record
  DetectionModel: string;
  RecognitionModel: string;
  ClassificationModel: string;
  CharacterDictionary: string;
  FontPath: string;
  UseAngleClassifier: Boolean;
  IntraOpThreads: Integer;
  InterOpThreads: Integer;
  MaxPixels: Integer;
  TimeoutMilliseconds: Cardinal;
  class function Default: THPDFRapidOCROptions; static;
end;

Alanları geçersiz kılmadan önce kaydı THPDFRapidOCROptions.Default ile başlatın

AlanVarsayılanAnlam
DetectionModelch_PP-OCRv4_det_mobile.onnxYerel algılama modeli
RecognitionModelch_PP-OCRv4_rec_mobile.onnxYerel tanıma modeli
ClassificationModelch_ppocr_mobile_v2.0_cls_mobile.onnxYalnızca açı sınıflandırması etkinken gerekir
CharacterDictionaryBoşTanıma modelinin gömülü karakter üst verisini kullanın; modelde bu üst veri yoksa yerel bir sözlük sağlayın
FontPathBoşRapidOCR'ın sonuç kapsayıcısı için %WINDIR%\Fonts\arial.ttf yoluna çözümlenir
UseAngleClassifierTrueMetin açısı sınıflandırmasını etkinleştirir; devre dışı bırakıldığında hiçbir sınıflandırma modeli gerekmez ya da geçirilmez
IntraOpThreads11 ile 64 arası ONNX işlem içi iş parçacıkları; worker'ın mantıksal CPU sayısıyla sınırlanır
InterOpThreads1Aynı sınırlara sahip ONNX işlemler arası iş parçacıkları
MaxPixels167772161 ile 67.108.864 arası girdi pixel bütçesi
TimeoutMilliseconds600001 ile 3.600.000 milisaniye arası toplam istek son tarihi

Köprü, tüm aşamalar için açıkça ONNX Runtime CPU arka ucunu seçer ve otomatik indirmeleri devre dışı bırakır; gömülü karakter sözlüğü eksikse hazırlanmış yerel bir CharacterDictionary gerekir

Açıkça seçilmiş modellerle örnek

uses SysUtils, HPDFDoc, HPDFRapidOCRRecognition;

procedure AddLocalRapidOCRText(PDF: THotPDF);
var
  Engine: IHPDFOCREngine;
  Models: THPDFRapidOCROptions;
  Layer: THPDFOCRTextLayerOptions;
  Info: THPDFOCRTextLayerInfo;
begin
  Models := THPDFRapidOCROptions.Default;
  Models.DetectionModel := 'PP-OCRv6_det_small.onnx';
  Models.RecognitionModel := 'PP-OCRv6_rec_small.onnx';
  Models.UseAngleClassifier := False;
  Engine := HPDFCreateRapidOCREngine(
    'C:\OCR\Python\python.exe',
    'C:\HotPDF\tools\OCR\rapidocr_tsv.py',
    'C:\OCR\models', Models);
  Layer := THPDFOCRTextLayerOptions.Default;
  if not PDF.ApplyLoadedOCRTextLayer([0], Engine, Layer, Info) then
    raise Exception.Create('Local RapidOCR text layer was not added');
end;

Sonuçlar, bütçeler ve iptal

Her istek, ödünç bitmap'i özel bir geçici dizine serileştirir, yerel bir Python worker başlatır ve istek bittiğinde süreç handle'larını ve geçici dosyaları temizler

Seçenek overload'u, bitmap serileştirmesinden önce MaxPixels'i denetler; worker da modelleri yüklemeden önce girdi boyutlarını denetler ve isteğin MaxWords ile MaxTextCodeUnits sınırlarını alır

Köprü karakter koordinatlarını ister ve her karakterin geometrisini, confidence değerini ile metin kapsamını doğrular; ardından eksiksiz tanınan her satırı, özgün iç boşlukları ve noktalamasıyla, özgün görüntü pixel'lerinde kapsayan sınırları ve 0 ile 1 aralığında ortalama confidence değeriyle yayınlar

Yayınlanan her satır bir MaxWords kotası tüketir; iç boşluklar MaxTextCodeUnits'e sayılır ve tüm satırın yayınlanması, metin katmanının harf aralığını kelime aralığı sanmasını önler

Boşluklar tanıyıcının satır metninden korunur; algılamanın ayrı kutulara böldüğü metin yine uzamsal kelime boşluğu çıkarımına bağlıdır ve harici PDF okuyucular çıkarma sırasında yinelenen boşlukları yeniden oluşturabilir veya daraltabilir

Destek karakterler iki UTF-16 birimi tüketir; geçersiz koordinat, confidence veya kontrol karakterleri ile tükenen bütçeler tanımayı başarısız kılar ve kısmi sonuçları temizler

Boş bir sayfa boş kelime dizisiyle başarılı olur; yerel baseline sağlanmaz, bu yüzden metin katmanı mevcut geometri yedeğini kullanır

İptal, timeout ve çıktı boyutları 25 milisaniyede bir yoklanır; bir Windows job, worker'ı ve varsa yorumlayıcı alt süreçlerini kapsar ve sonlandırma, süreç temizliği için beş saniyeye kadar ek bekler

ApplyLoadedOCRTextLayer, tanıma başarılı olduktan sonra seçilen tüm sayfaları atomik olarak yayınlar

TSV çıktısı 64 MiB ile, diagnostic çıktısı 1 MiB ile sınırlıdır; girdi ve çıktı bütçeleri ONNX modeli veya çıkarım bellek kullanımına katı bir üst sınır getirmez

Model başlatma, her istek için yeni bir Python sürecinde gerçekleşir ve son tarihe dahildir

Doğrulama

Paylaşılan Delphi ve FPC bağdaştırıcı koşucuları; model ön kontrolünü, özel yolları, isteğe bağlı sınıflandırmayı, Unicode'u, bütçeleri, worker hatasını, iptali ve timeout'u kapsar. İsteğe bağlı RapidOCR parametreleri gerçek tanıma ve aranabilir PDF gidiş-dönüş denetimlerini etkinleştirir

Tests/Delphi/Run-TesseractRecognitionTests.ps1 veya Tests/Delphi/Run-TesseractFPCRecognitionTests.ps1 betiklerini -RapidOCRPython, -RapidOCRModelDirectory, -RapidOCRDetectionModel ve -RapidOCRRecognitionModel ile kullanın

Render seçenekleri, Unicode PDF metin eşlemesi, optional-content gruplaması ve uygunluk sınırları için Aranabilir OCR Metin Katmanları sayfasına bakın