RapidOCR lokal model-adapter
Til cached ONNX-inference i processen skal du bruge RapidOCR native DLL-adapteren med HPDFCreateRapidOCRDLLOCREngine og THPDFRapidOCRDLLOptions
Native-adapteren leverer THPDFRapidOCRDLLOptions.ForLanguage-forudindstillinger for forenklet og traditionelt kinesisk, engelsk, latinske sprog, japansk, koreansk, kyrilliske sprog inklusive russisk, arabiske sprog og devanagari-sprog
HPDFRapidOCRRecognition leverer en Windows-procesadapter, der implementerer IHPDFOCREngine i Delphi-, C++Builder- og FPC/Lazarus Win32- og Win64-builds
Klargør Python med rapidocr og onnxruntime, den medfølgende tools/OCR/rapidocr_tsv.py-bridge og kompatible lokale ONNX-modeller; adapteren installerer hverken pakker eller downloader modeller, ordbøger eller fonts
Python kører i en separat skjult proces, så dens arkitektur må afvige fra den kaldende applikation; dens ONNX Runtime-pakke skal matche dens egen Python-arkitektur
Factory-overloads
function HPDFCreateRapidOCREngine(const PythonExecutable, BridgeScript,
ModelDirectory: string; TimeoutMilliseconds: Cardinal = 60000): IHPDFOCREngine; overload;
function HPDFCreateRapidOCREngine(const PythonExecutable, BridgeScript,
ModelDirectory: string; const Options: THPDFRapidOCROptions): IHPDFOCREngine; overload;
Den oprindelige timeout-overload forbliver kompatibel med den eksisterende bridge-protokol og bruger de tre standard PP-OCRv4-modelfilnavne; den tjekker eksekverbar-, script- og mappestier ved konstruktion og tjekker modeltilgængelighed i workeren
Options-overloaden tjekker hver påkrævet model, en valgfri ordbog og den lokale font, før adapteren returneres; manglende filer eller ugyldige options udløser EArgumentException, før genkendelsen starter
Relative model-, ordbogs- og fontstier opløses mod ModelDirectory; absolutte stier kan pege på separat klargjorte filer
Brug modeller, der er kompatible med RapidOCRs detektions-, klassifikations- og CTC-genkendelsespipeline; en model fra en anden OCR-pipeline kan kræve anden forbehandling og kan ikke vælges alene, fordi den bruger ONNX-formatet
Sprogspecifik modeludvælgelse
Python-procesadapteren bruger fortsat eksplicitte THPDFRapidOCROptions-stier; ForLanguage hører til native DLL-optionsrecorden og er ikke en metode på Python-adapteren
Klargør lokale sprogmodeller og ordbøger med tools/Install-RapidOCRModels.ps1 -Destination C:/OCR/models -Language ch,cyrillic, eller vælg -Language All for alle ni sprogprofiler
Hjælperen tjekker fastpintede SHA256-hashes og placerer hver genkender på <profile>/recognition.onnx med sin matchende <profile>/dictionary.txt; runtime-genkendelse forbliver offline uden automatiske downloads
Til russisk skal du bruge cyrillic/recognition.onnx og cyrillic/dictionary.txt; forenklet kinesisk bruger ch-profilen, og traditionelt kinesisk bruger 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';
De ovenstående detektor- og klassifikator-rootfilnavne matcher klargøringshjælperens delte modeller; angiv matchende genkendelsesmodel og ordbog sammen, og vælg en separat motor til sider eller regioner, der behøver et andet script
Options og standardværdier
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;
Initialisér recorden med THPDFRapidOCROptions.Default, før du tilsidesætter felter
| Felt | Standard | Betydning |
|---|---|---|
DetectionModel | ch_PP-OCRv4_det_mobile.onnx | Lokal detektionsmodel |
RecognitionModel | ch_PP-OCRv4_rec_mobile.onnx | Lokal genkendelsesmodel |
ClassificationModel | ch_ppocr_mobile_v2.0_cls_mobile.onnx | Kræves kun, når vinkelklassifikation er slået til |
CharacterDictionary | Tom | Brug genkendelsesmodellens indlejrede tegnmetadata; angiv en lokal ordbog, når modellen mangler disse metadata |
FontPath | Tom | Opløses til %WINDIR%\Fonts\arial.ttf for RapidOCRs resultatbeholder |
UseAngleClassifier | True | Aktivér tekstvinkelklassifikation; når den er deaktiveret, kræves eller sendes ingen klassifikationsmodel |
IntraOpThreads | 1 | ONNX intra-operation-tråde fra 1 til 64, begrænset til workerens logiske CPU-antal |
InterOpThreads | 1 | ONNX inter-operation-tråde med de samme grænser |
MaxPixels | 16777216 | Input-pixelbudget fra 1 til 67.108.864 |
TimeoutMilliseconds | 60000 | Samlet forespørgselsdeadline fra 1 til 3.600.000 millisekunder |
Bridgen vælger eksplicit ONNX Runtime CPU-backend til alle stadier og deaktiverer automatiske downloads; en manglende indlejret tegnordbog kræver en klargjort lokal CharacterDictionary
Eksempel med eksplicit valgte modeller
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;
Resultater, budgetter og annullering
Hver forespørgsel serialiserer den lånte bitmap til en privat midlertidig mappe, starter en lokal Python-worker og rydder op i proceshandles og midlertidige filer, når forespørgslen afsluttes
Options-overloaden tjekker MaxPixels før bitmap-serialisering; workeren tjekker også inputdimensionerne, før modellerne indlæses, og modtager forespørgslens MaxWords- og MaxTextCodeUnits-grænser
Bridgen anmoder om tegnkoordinater og validerer hvert tegns geometri, confidence og tekstdækning og udsender derefter hver komplet genkendt linje med dens oprindelige interne mellemrum og tegnsætning, de omsluttende grænser i originale billedpixels og gennemsnitlig confidence i intervallet 0 til 1
Hver udsendt linje bruger én MaxWords-plads; interne mellemrum tæller med i MaxTextCodeUnits, og at en hel linje publiceres forhindrer tekstlaget i at forveksle bogstavafstande med ordmellemrum
Mellemrum bevares fra genkenderens linjetekst; tekst, som detektionen splitter i separate bokse, afhænger stadig af rumlig ordhul-inferens, og eksterne PDF-læsere kan rekonstruere eller fjerne gentagne mellemrum ved udtræk
Supplerende tegn bruger to UTF-16-enheder; ugyldige koordinater, confidence, kontroltegn eller opbrugte budgetter fejler genkendelsen og rydder delvise resultater
En tom side lykkes med et tomt ord-array; der leveres ingen native baseline, så tekstlaget bruger sin eksisterende geometri-fallback
Annullering, timeout og outputstørrelser polles hver 25. millisekund; et Windows-job indeholder workeren og eventuelle interpreter-børneprocesser, og terminering venter op til fem yderligere sekunder på procesoprydning
ApplyLoadedOCRTextLayer publicerer alle valgte sider atomært, efter genkendelsen lykkes
TSV-output er begrænset til 64 MiB og diagnostikoutput til 1 MiB; input- og outputbudgetter pålægger ikke en hård grænse for ONNX-model- eller inferenshukommelse
Modelinitialisering sker i en ny Python-proces pr. forespørgsel og tæller med i deadlinen
Validering
De delte Delphi- og FPC-adapter-runnere dækker model-preflight, brugerdefinerede stier, valgfri klassifikation, Unicode, budgetter, worker-fejl, annullering og timeout; deres valgfrie RapidOCR-parametre muliggør ægte genkendelse og søgbare PDF-roundtrip-tjek
Brug Tests/Delphi/Run-TesseractRecognitionTests.ps1 eller Tests/Delphi/Run-TesseractFPCRecognitionTests.ps1 med -RapidOCRPython, -RapidOCRModelDirectory, -RapidOCRDetectionModel og -RapidOCRRecognitionModel
Se søgbare OCR-tekstlag for renderingsvalg, Unicode PDF-tekstmapping, optional-content-gruppering og konformitetsgrænser