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

FeltStandardBetydning
DetectionModelch_PP-OCRv4_det_mobile.onnxLokal detektionsmodel
RecognitionModelch_PP-OCRv4_rec_mobile.onnxLokal genkendelsesmodel
ClassificationModelch_ppocr_mobile_v2.0_cls_mobile.onnxKræves kun, når vinkelklassifikation er slået til
CharacterDictionaryTomBrug genkendelsesmodellens indlejrede tegnmetadata; angiv en lokal ordbog, når modellen mangler disse metadata
FontPathTomOpløses til %WINDIR%\Fonts\arial.ttf for RapidOCRs resultatbeholder
UseAngleClassifierTrueAktivér tekstvinkelklassifikation; når den er deaktiveret, kræves eller sendes ingen klassifikationsmodel
IntraOpThreads1ONNX intra-operation-tråde fra 1 til 64, begrænset til workerens logiske CPU-antal
InterOpThreads1ONNX inter-operation-tråde med de samme grænser
MaxPixels16777216Input-pixelbudget fra 1 til 67.108.864
TimeoutMilliseconds60000Samlet 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