Adapter för lokala RapidOCR-modeller
För cachad ONNX-inferens i processen, använd RapidOCR Native DLL-adaptern med HPDFCreateRapidOCRDLLOCREngine och THPDFRapidOCRDLLOptions
Den nativa adaptern tillhandahåller THPDFRapidOCRDLLOptions.ForLanguage-förinställningar för förenklad och traditionell kinesiska, engelska, latinska språk, japanska, koreanska, kyrilliska språk inklusive ryska, arabiska språk och devanagari
HPDFRapidOCRRecognition tillhandahåller en Windows-processadapter som implementerar IHPDFOCREngine i Delphi-, C++Builder- och FPC/Lazarus-byggen för Win32 och Win64
Provisionera Python med rapidocr och onnxruntime, den medföljande tools/OCR/rapidocr_tsv.py-bryggan och kompatibla lokala ONNX-modeller; adaptern installerar inga paket och laddar inte ner modeller, ordlistor eller typsnitt
Python körs i en separat dold process, så dess arkitektur kan skilja sig från anroparapplikationens; dess ONNX Runtime-paket måste matcha dess egen Python-arkitektur
Fabriksöverlagringar
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 ursprungliga timeout-överlagringen förblir kompatibel med det befintliga bryggprotokollet och använder de tre standardiserade PP-OCRv4-modellfilnamnen; den kontrollerar körbara filers, skripts och katalogers sökvägar vid konstruktion och modellernas tillgänglighet i workern
Optionsöverlagringen kontrollerar varje nödvändig modell, en valfri ordlista och det lokala typsnittet innan adaptern returneras; saknade filer eller ogiltiga alternativ kastar EArgumentException innan igenkänningen startar
Relativa modell-, ordliste- och typsnittssökvägar löses mot ModelDirectory; absoluta sökvägar kan peka på separat provisionerade filer
Använd modeller som är kompatibla med RapidOCRs pipeline för detektering, klassificering och CTC-igenkänning; en modell från en annan OCR-pipeline kan kräva annan förbehandling och går inte att välja enbart för att den använder ONNX-formatet
Modellval per språk
Python-processadaptern fortsätter använda explicita THPDFRapidOCROptions-sökvägar; ForLanguage tillhör options-posten för den nativa DLL:en och är ingen metod på Python-adaptern
Provisionera lokala språkmodeller och ordlistor med tools/Install-RapidOCRModels.ps1 -Destination C:/OCR/models -Language ch,cyrillic, eller välj -Language All för alla nio språkprofiler
Hjälpen kontrollerar låsta SHA256-hashar och placerar varje igenkännare på <profile>/recognition.onnx med tillhörande <profile>/dictionary.txt; igenkänningen vid körning förblir offline utan automatiska nedladdningar
För ryska, använd cyrillic/recognition.onnx och cyrillic/dictionary.txt; förenklad kinesiska använder profilen ch och traditionell kinesiska 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';
Rotfilnamnen för detektor och klassificerare ovan motsvarar provisioneringshjälpens delade modeller; ange matchande igenkänningsmodell och ordlista tillsammans, och välj en separat motor för sidor eller regioner som behöver ett annat skriftsystem
Alternativ och standardvärden
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;
Initiera posten med THPDFRapidOCROptions.Default innan fälten åsidosätts
| Fält | Standard | Betydelse |
|---|---|---|
DetectionModel | ch_PP-OCRv4_det_mobile.onnx | Lokal detekteringsmodell |
RecognitionModel | ch_PP-OCRv4_rec_mobile.onnx | Lokal igenkänningsmodell |
ClassificationModel | ch_ppocr_mobile_v2.0_cls_mobile.onnx | Krävs bara när vinkelklassificering är aktiverad |
CharacterDictionary | Tom | Använd igenkänningsmodellens inbäddade teckenmetadata; ange en lokal ordlista när modellen saknar den metadatan |
FontPath | Tom | Löses till %WINDIR%\Fonts\arial.ttf för RapidOCRs resultatbehållare |
UseAngleClassifier | True | Aktiverar vinkelklassificering av text; när den är avstängd krävs och skickas ingen klassificeringsmodell |
IntraOpThreads | 1 | ONNX-trådar inom operationer, från 1 till 64, taklagda vid workerns antal logiska CPU:er |
InterOpThreads | 1 | ONNX-trådar mellan operationer med samma gränser |
MaxPixels | 16777216 | Pixelbudget för indata, från 1 till 67 108 864 |
TimeoutMilliseconds | 60000 | Total tidsgräns per begäran, från 1 till 3 600 000 millisekunder |
Bryggan väljer explicit ONNX Runtime CPU-backend för alla steg och stänger av automatiska nedladdningar; saknas den inbäddade teckenordlistan krävs en provisionerad lokal CharacterDictionary
Exempel med explicit valda 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;
Resultat, budgetar och avbrott
Varje begäran serialiserar den lånade bitmappen till en privat tillfällig katalog, startar en lokal Python-worker och städar upp dess processhandtag och temporärfiler när begäran är klar
Optionsöverlagringen kontrollerar MaxPixels innan bitmappen serialiseras; workern kontrollerar också indatadimensionerna innan modellerna läses in och får begärans gränser MaxWords och MaxTextCodeUnits
Bryggan begär teckenkoordinater och validerar varje teckens geometri, tillförlitlighet och texttäckning och avger därefter varje komplett igenkänd rad med dess ursprungliga interna mellanslag och skiljetecken, de omslutande gränserna i originalbildens pixlar och medeltillförlitlighet i intervallet 0 till 1
Varje avgiven rad förbrukar en MaxWords-plats; interna mellanslag räknas mot MaxTextCodeUnits, och att publicera hela raden hindrar textlagret från att förväxla bokstavsavstånd med ordavstånd
Avstånden bevaras från igenkännarens radtext; text som detekteringen delar upp i separata rutor beror fortfarande på rumslig slutledning av ordluckor, och externa PDF-läsare kan återskapa eller lägga ihop upprepade mellanslag vid extraktion
Supplerande tecken förbrukar två UTF-16-enheter; ogiltiga koordinater, tillförlitlighet, kontrolltecken eller uttömda budgetar gör att igenkänningen misslyckas och partiella resultat rensas
En tom sida lyckas med en tom ordarray; ingen nativ baslinje levereras, så textlagret använder sin befintliga reservlösning för geometri
Avbrott, timeout och utdatastorlekar pollas var 25:e millisekund; ett Windows-jobb omsluter workern och eventuella underordnade tolkprocesser, och avslutningen väntar upp till fem sekunder ytterligare på processstädning
ApplyLoadedOCRTextLayer publicerar alla valda sidor atomiskt när igenkänningen lyckats
TSV-utdata begränsas till 64 MiB och diagnostikutdata till 1 MiB; in- och utdatabudgetar sätter inget hårt tak för minnesanvändningen i ONNX-modeller eller inferens
Modellinitiering sker i en ny Python-process för varje begäran och ingår i tidsgränsen
Validering
De delade Delphi- och FPC-adapterrunnarna täcker modellpreflight, anpassade sökvägar, valfri klassificering, Unicode, budgetar, workerfel, avbrott och timeout; deras valfria RapidOCR-parametrar aktiverar riktig igenkänning och rundturskontroller av sökbar PDF
Använd Tests/Delphi/Run-TesseractRecognitionTests.ps1 eller Tests/Delphi/Run-TesseractFPCRecognitionTests.ps1 med -RapidOCRPython, -RapidOCRModelDirectory, -RapidOCRDetectionModel och -RapidOCRRecognitionModel
Se Sökbara OCR-textlager för renderingsalternativ, Unicode-mappning av PDF-text, gruppering i valfritt innehåll och regelefterlevnadsgränser