Adapter lokalnih RapidOCR modela
Za predmemoriranu ONNX inferenciju unutar procesa koristite adapter nativne RapidOCR DLL datoteke s HPDFCreateRapidOCRDLLOCREngine-om i THPDFRapidOCRDLLOptions-om
Nativni adapter nudi presetove THPDFRapidOCRDLLOptions.ForLanguage za pojednostavljeni i tradicionalni kineski, engleski, latinske jezike, japanski, korejski, ćirilične jezike uključujući ruski, arapske jezike i devanagari jezike
HPDFRapidOCRRecognition pruža Windows procesni adapter koji implementira IHPDFOCREngine u Delphi, C++Builder i FPC/Lazarus Win32 i Win64 izvedbama
Osigurajte Python s paketima rapidocr i onnxruntime, priloženim mostom tools/OCR/rapidocr_tsv.py i kompatibilnim lokalnim ONNX modelima; adapter ne instalira pakete niti preuzima modele, rječnike ili fontove
Python radi u zasebnom skrivenom procesu, pa njegova arhitektura može odstupati od arhitekture aplikacije koja ga poziva; njegov ONNX Runtime paket mora odgovarati arhitekturi vlastitog Pythona
Tvornička preopterećenja
function HPDFCreateRapidOCREngine(const PythonExecutable, BridgeScript,
ModelDirectory: string; TimeoutMilliseconds: Cardinal = 60000): IHPDFOCREngine; overload;
function HPDFCreateRapidOCREngine(const PythonExecutable, BridgeScript,
ModelDirectory: string; const Options: THPDFRapidOCROptions): IHPDFOCREngine; overload;
Izvorno preopterećenje s vremenskim ograničenjem ostaje kompatibilno s postojećim protokolom mosta i koristi tri zadana naziva datoteka PP-OCRv4 modela; pri konstrukciji provjerava putanje izvršne datoteke, skripte i direktorija, a dostupnost modela provjerava u radniku
Preopterećenje s opcijama prije vraćanja adaptera provjerava svaki potreban model, neobavezni rječnik i lokalni font; nedostajuće datoteke ili nevažeće opcije podižu EArgumentException prije početka prepoznavanja
Relativne putanje modela, rječnika i fontova razrješuju se prema ModelDirectory-u; apsolutne putanje mogu ukazivati na zasebno osigurane datoteke
Koristite modele kompatibilne s RapidOCR-ovim cjevovodom detekcije, klasifikacije i CTC prepoznavanja; model iz drugog OCR cjevovoda može zahtijevati drugačiju predobradu i ne može se odabrati samo zato što koristi ONNX format
Odabir modela specifičan za jezik
Python procesni adapter i dalje koristi eksplicitne putanje iz THPDFRapidOCROptions-a; ForLanguage pripada zapisu opcija nativne DLL datoteke i nije metoda Python adaptera
Lokalne jezične modele i rječnike osigurajte s tools/Install-RapidOCRModels.ps1 -Destination C:/OCR/models -Language ch,cyrillic, ili odaberite -Language All za svih devet jezičnih profila
Pomoćnik provjerava zaključane SHA256 sažetke i smješta svaki prepoznavatelj u <profile>/recognition.onnx s pripadajućom <profile>/dictionary.txt datotekom; prepoznavanje tijekom izvođenja ostaje offline bez automatskih preuzimanja
Za ruski koristite cyrillic/recognition.onnx i cyrillic/dictionary.txt; pojednostavljeni kineski koristi ch profil, a tradicionalni kineski 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';
Korijenski nazivi datoteka detektora i klasifikatora odozgo odgovaraju dijeljenim modelima pomoćnika za osiguranje; dostavite odgovarajući model prepoznavanja i rječnik zajedno te odaberite zasebni motor za stranice ili regije kojima treba drugo pismo
Opcije i zadane vrijednosti
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 inicijalizirajte s THPDFRapidOCROptions.Default prije nadjačavanja polja
| Polje | Zadano | Značenje |
|---|---|---|
DetectionModel | ch_PP-OCRv4_det_mobile.onnx | Lokalni model detekcije |
RecognitionModel | ch_PP-OCRv4_rec_mobile.onnx | Lokalni model prepoznavanja |
ClassificationModel | ch_ppocr_mobile_v2.0_cls_mobile.onnx | Potreban samo kada je omogućena klasifikacija kutova |
CharacterDictionary | Prazno | Koristi ugrađene metapodatke znakova modela prepoznavanja; dostavite lokalni rječnik kada model nema te metapodatke |
FontPath | Prazno | Razrješuje se na %WINDIR%\Fonts\arial.ttf za RapidOCR-ov spremnik rezultata |
UseAngleClassifier | True | Omogućuje klasifikaciju kuta teksta; kada je onemogućena, klasifikacijski model nije potreban niti se prosljeđuje |
IntraOpThreads | 1 | ONNX niti unutar operacije, od 1 do 64, ograničene na broj logičkih CPU-a radnika |
InterOpThreads | 1 | ONNX niti između operacija s istim ograničenjima |
MaxPixels | 16777216 | Proračun ulaznih piksela, od 1 do 67.108.864 |
TimeoutMilliseconds | 60000 | Rok cijelog zahtjeva, od 1 do 3.600.000 milisekundi |
Most eksplicitno bira ONNX Runtime CPU pozadinski sustav za sve faze i onemogućuje automatska preuzimanja; nedostajući ugrađeni rječnik znakova zahtijeva osigurani lokalni CharacterDictionary
Primjer s eksplicitno odabranim modelima
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 i otkazivanje
Svaki zahtjev serializira posuđeni bitmap u privatni privremeni direktorij, pokreće lokalnog Python radnika te po završetku zahtjeva čisti ručke procesa i privremene datoteke
Preopterećenje s opcijama provjerava MaxPixels prije serializacije bitmape; radnik također provjerava dimenzije ulaza prije učitavanja modela i prima ograničenja MaxWords i MaxTextCodeUnits zahtjeva
Most zatraži koordinate znakova i validira geometriju, pouzdanost i pokrivenost tekstom svakog znaka, a zatim ispušta svaki kompletan prepoznati redak s njegovim izvornim unutarnjim razmacima i interpunkcijom, ograđujućim granicama u pikselima izvorne slike i srednjom pouzdanošću u rasponu od 0 do 1
Svaki ispušteni redak troši jedan MaxWords slot; unutarnji razmaci računaju se u MaxTextCodeUnits, a objava cijelog retka sprječava tekstualni sloj da razmak između slova pomiješa s razmakom između riječi
Razmaci se čuvaju iz teksta retka prepoznavatelja; tekst koji detekcija podijeli u zasebne okvire i dalje ovisi o prostornom zaključivanju praznina između riječi, a vanjski PDF čitači mogu tijekom izdvajanja rekonstruirati ili sažeti ponovljene razmake
Dopunski znakovi troše dvije UTF-16 jedinice; nevažeće koordinate, pouzdanost, kontrolni znakovi ili iscrpljeni proračuni obaraju prepoznavanje i brišu djelomične rezultate
Prazna stranica uspijeva s praznim poljem riječi; nativna osnovna linija nije dostavljena, pa tekstualni sloj koristi svoju postojeću geometrijsku pričuvu
Otkazivanje, vremensko ograničenje i veličine izlaza provjeravaju se svakih 25 milisekundi; Windows posao obuhvaća radnika i sve podređene procese tumača, a terminacija čeka dodatnih najviše pet sekundi za čišćenje procesa
ApplyLoadedOCRTextLayer atomski objavljuje sve odabrane stranice nakon uspješnog prepoznavanja
TSV izlaz ograničen je na 64 MiB, a dijagnostički izlaz na 1 MiB; ulazni i izlazni proračuni ne nameću čvrsti strop potrošnji memorije ONNX modela ni inferencije
Inicijalizacija modela odvija se u novom Python procesu za svaki zahtjev i uračunata je u rok
Validacija
Zajednički Delphi i FPC pokretači adaptera pokrivaju preflight modela, prilagođene putanje, neobaveznu klasifikaciju, Unicode, proračune, pad radnika, otkazivanje i vremensko ograničenje; njihovi neobavezni RapidOCR parametri omogućuju stvarno prepoznavanje i provjere povratnog puta pretraživog PDF-a
Koristite Tests/Delphi/Run-TesseractRecognitionTests.ps1 ili Tests/Delphi/Run-TesseractFPCRecognitionTests.ps1 s -RapidOCRPython, -RapidOCRModelDirectory, -RapidOCRDetectionModel i -RapidOCRRecognitionModel
Vidi Searchable OCR Text Layers za opcije renderiranja, Unicode mapiranje PDF teksta, grupiranje neobaveznog sadržaja i granice usklađenosti