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
| Alan | Varsayılan | Anlam |
|---|---|---|
DetectionModel | ch_PP-OCRv4_det_mobile.onnx | Yerel algılama modeli |
RecognitionModel | ch_PP-OCRv4_rec_mobile.onnx | Yerel tanıma modeli |
ClassificationModel | ch_ppocr_mobile_v2.0_cls_mobile.onnx | Yalnızca açı sınıflandırması etkinken gerekir |
CharacterDictionary | Boş | Tanıma modelinin gömülü karakter üst verisini kullanın; modelde bu üst veri yoksa yerel bir sözlük sağlayın |
FontPath | Boş | RapidOCR'ın sonuç kapsayıcısı için %WINDIR%\Fonts\arial.ttf yoluna çözümlenir |
UseAngleClassifier | True | Metin 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 |
IntraOpThreads | 1 | 1 ile 64 arası ONNX işlem içi iş parçacıkları; worker'ın mantıksal CPU sayısıyla sınırlanır |
InterOpThreads | 1 | Aynı sınırlara sahip ONNX işlemler arası iş parçacıkları |
MaxPixels | 16777216 | 1 ile 67.108.864 arası girdi pixel bütçesi |
TimeoutMilliseconds | 60000 | 1 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