Adapter RapidOCR z lokalnimi modeli
Za predpomnjeno sklepanje ONNX znotraj procesa uporabite nativni adapter RapidOCR DLL s HPDFCreateRapidOCRDLLOCREngine in THPDFRapidOCRDLLOptions
Nativni adapter ponuja prednastavitve THPDFRapidOCRDLLOptions.ForLanguage za poenostanjeno in tradicionalno kitajščino, angleščino, latinske jezike, japonščino, korejščino, cirilične jezike vključno z ruščino, arabske jezike in jezike devanagari
HPDFRapidOCRRecognition ponuja procesni adapter za Windows, ki v gradnjah Delphi, C++Builder ter FPC/Lazarus Win32 in Win64 implementira IHPDFOCREngine
Namestite Python s paketoma rapidocr in onnxruntime, priloženim mostom tools/OCR/rapidocr_tsv.py ter združljivimi lokalnimi modeli ONNX; adapter ne namešča paketov in ne prenaša modelov, slovarjev ali pisav
Python teče v ločenem skritem procesu, zato je lahko njegova arhitektura drugačna od arhitekture klicajoče aplikacije; njegov paket ONNX Runtime se mora ujemati z lastno arhitekturo Pythona
Preobremenitve tovarne
function HPDFCreateRapidOCREngine(const PythonExecutable, BridgeScript,
ModelDirectory: string; TimeoutMilliseconds: Cardinal = 60000): IHPDFOCREngine; overload;
function HPDFCreateRapidOCREngine(const PythonExecutable, BridgeScript,
ModelDirectory: string; const Options: THPDFRapidOCROptions): IHPDFOCREngine; overload;
Izvirna preobremenitev s časovno omejitvijo ostane združljiva z obstoječim protokolom mostu in uporablja tri privzeta imena datotek modelov PP-OCRv4; ob gradnji adapterja preveri poti izvedljive datoteke, skripte in imenika, razpoložljivost modelov pa preveri delavec
Preobremenitev z možnostmi preveri vsak zahtevani model, neobvezen slovar in lokalno pisavo, preden vrne adapter; manjkajoče datoteke ali neveljavne možnosti sprožijo EArgumentException, preden se prepoznavanje začne
Relativne poti modelov, slovarjev in pisav se razrešijo glede na ModelDirectory; absolutne poti lahko kažejo na ločeno pripravljene datoteke
Uporabite modele, združljive s cevovodom RapidOCR za zaznavanje, klasifikacijo in CTC prepoznavanje; model iz drugega cevovoda OCR lahko zahteva drugačno predobdelavo in ga ni mogoče izbrati samo zato, ker uporablja format ONNX
Izbor modelov po jeziku
Procesni adapter Python še naprej uporablja izrecne poti THPDFRapidOCROptions; ForLanguage pripada zapisu možnosti nativnega DLL in ni metoda adapterja Python
Lokalne jezikovne modele in slovarje pripravite z tools/Install-RapidOCRModels.ps1 -Destination C:/OCR/models -Language ch,cyrillic ali izberite -Language All za vseh devet jezikovnih profilov
Pomočnik preveri pripete zgoščene vrednosti SHA256 in vsak prepoznavalnik postavi na <profile>/recognition.onnx z ujemajočo datoteko <profile>/dictionary.txt; prepoznavanje med izvajanjem ostaja brez povezave, brez samodejnih prenosov
Za ruščino uporabite cyrillic/recognition.onnx in cyrillic/dictionary.txt; poenostanjena kitajščina uporablja profil ch, tradicionalna kitajščina pa chinese_cht
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';
Zgornji korenski imeni datotek zaznavalnika in klasifikatorja ustrezata deljenima modeloma pomočnika za pripravo; ujemajoč model prepoznavanja in slovar podajte skupaj, za strani ali območja, ki potrebujejo drug pisni sistem, pa izberite ločen pogon
Možnosti in privzete vrednosti
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;
Zapis inicializirajte s THPDFRapidOCROptions.Default, preden povozite polja
| Polje | Privzeto | Pomen |
|---|---|---|
DetectionModel | ch_PP-OCRv4_det_mobile.onnx | Lokalni model zaznavanja |
RecognitionModel | ch_PP-OCRv4_rec_mobile.onnx | Lokalni model prepoznavanja |
ClassificationModel | ch_ppocr_mobile_v2.0_cls_mobile.onnx | Zahtevan le, kadar je omogočena klasifikacija kota |
CharacterDictionary | Prazen | Uporabi vgrajene metapodatke znakov modela prepoznavanja; lokalni slovar podajte, kadar modelu ti metapodatki manjkajo |
FontPath | Prazen | Razreši se na %WINDIR%\Fonts\arial.ttf za vsebnik rezultatov RapidOCR |
UseAngleClassifier | True | Omogoči klasifikacijo kota besedila; ko je onemogočena, klasifikacijski model ni zahtevan in se ne posreduje |
IntraOpThreads | 1 | Niti ONNX znotraj operacij, od 1 do 64, omejene na število logičnih procesorjev delavca |
InterOpThreads | 1 | Niti ONNX med operacijami z enakimi omejitvami |
MaxPixels | 16777216 | Proračun vhodnih pikslov, od 1 do 67.108.864 |
TimeoutMilliseconds | 60000 | Skupni rok zahteve, od 1 do 3.600.000 milisekund |
Most za vse faze izrecno izbere CPU backend ONNX Runtime in onemogoči samodejne prenose; kadar vgrajen slovar znakov manjka, je zahtevan pripravljen lokalni CharacterDictionary
Primer z izrecno izbranimi modeli
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;
Rezultati, proračuni in preklic
Vsaka zahteva serializira izposojeno bitno sliko v zasebni začasni imenik, zažene lokalnega delavca Python in ob zaključku zahteve počisti njegove ročaje procesov ter začasne datoteke
Preobremenitev z možnostmi preveri MaxPixels pred serializacijo bitne slike; delavec preveri tudi vhodne dimenzije, preden naloži modele, in prejme omejitve MaxWords ter MaxTextCodeUnits zahteve
Most zahteva koordinate znakov in preveri geometrijo, zaupanje ter pokritost besedila vsakega znaka, nato pa izda vsako popolno prepoznano vrstico z njenimi izvirnimi notranjimi presledki in ločili, z obdajajočimi mejami v pikslih izvirne slike in s povprečno vrednostjo zaupanja v območju od 0 do 1
Vsaka izdana vrstica porabi eno mesto MaxWords; notranji presledki se štejejo v MaxTextCodeUnits, objava cele vrstice pa preprečuje, da bi besedilna plast zamenjala razmik med črkami z razmikom med besedami
Razmiki se ohranijo iz besedila vrstice prepoznavalnika; besedilo, ki ga zaznavanje razdeli v ločena okvirja, se še naprej zanaša na prostorsko sklepanje o vrzelih med besedami, zunanji bralniki PDF pa lahko med izvlečenjem ponovno sestavijo ali strnejo podvojene presledke
Dopolnilni znaki porabijo dve enoti UTF-16; neveljavne koordinate, zaupanje, krmilni znaki ali izčrpani proračuni spodletijo prepoznavanje in počistijo delne rezultate
Prazna stran uspe s prazno tabelo besed; nativna osnovna črta se ne posreduje, zato besedilna plast uporabi svoj obstoječi geometrijski rezervni način
Preklic, časovna omejitev in velikosti izhoda se preverjajo vsakih 25 milisekund; delavec in morebitni podrejeni procesi tolmača so zaprti v poslu Windows, ob prekinitvi pa se za čiščenje procesov počaka še do pet dodatnih sekund
ApplyLoadedOCRTextLayer objavi vse izbrane strani atomsko, ko prepoznavanje uspe
Izhod TSV je omejen na 64 MiB in diagnostični izhod na 1 MiB; vhodni in izhodni proračuni ne postavljajo stroge zgornje meje porabe pomnilnika modelov ONNX ali sklepanja
Inicializacija modelov poteka v novem procesu Python za vsako zahtevo in je vključena v časovni rok
Preverjanje
Skupna zaganjalnika adapterjev Delphi in FPC pokrivata predhodna preverjanja modelov, poti po meri, neobvezno klasifikacijo, Unicode, proračune, odpoved delavca, preklic in časovno omejitev; njuna neobvezna parametra RapidOCR omogočita resnično prepoznavanje in povratne preizkuse iskalnega PDF
Uporabite Tests/Delphi/Run-TesseractRecognitionTests.ps1 ali Tests/Delphi/Run-TesseractFPCRecognitionTests.ps1 s -RapidOCRPython, -RapidOCRModelDirectory, -RapidOCRDetectionModel in -RapidOCRRecognitionModel
Glejte Iskalne plasti besedila OCR za možnosti upodabljanja, preslikavo besedila Unicode v PDF, združevanje neobvezne vsebine in omejitve skladnosti