Adapter τοπικών μοντέλων RapidOCR
Για cached συμπεράσματα ONNX in-process, χρησιμοποιήστε τον εγγενή DLL adapter του RapidOCR με τα HPDFCreateRapidOCRDLLOCREngine και THPDFRapidOCRDLLOptions
Ο εγγενής adapter παρέχει προεπιλογές THPDFRapidOCRDLLOptions.ForLanguage για Απλοποιημένα και Παραδοσιακά Κινεζικά, Αγγλικά, Λατινικές γλώσσες, Ιαπωνικά, Κορεάτικα, κυριλλικές γλώσσες συμπεριλαμβανομένων των Ρωσικών, αραβικές γλώσσες, και γλώσσες Devanagari
Το HPDFRapidOCRRecognition παρέχει έναν adapter διεργασίας Windows που υλοποιεί το IHPDFOCREngine σε builds Delphi, C++Builder, και FPC/Lazarus Win32 και Win64
Προμηθεύστε Python με τα rapidocr και onnxruntime, το συνοδευτικό bridge tools/OCR/rapidocr_tsv.py, και συμβατά τοπικά μοντέλα ONNX· ο adapter δεν εγκαθιστά πακέτα ούτε κατεβάζει μοντέλα, λεξικά, ή γραμματοσειρές
Η Python τρέχει σε ξεχωριστή κρυφή διεργασία, οπότε η αρχιτεκτονική της μπορεί να διαφέρει από αυτή της καλούσας εφαρμογής· το πακέτο ONNX Runtime της πρέπει να ταιριάζει με τη δική της αρχιτεκτονική Python
Overloads του factory
function HPDFCreateRapidOCREngine(const PythonExecutable, BridgeScript,
ModelDirectory: string; TimeoutMilliseconds: Cardinal = 60000): IHPDFOCREngine; overload;
function HPDFCreateRapidOCREngine(const PythonExecutable, BridgeScript,
ModelDirectory: string; const Options: THPDFRapidOCROptions): IHPDFOCREngine; overload;
Το αρχικό overload με timeout παραμένει συμβατό με το υπάρχον πρωτόκολλο bridge και χρησιμοποιεί τα τρία προεπιλεγμένα ονόματα αρχείων μοντέλων PP-OCRv4· ελέγχει τις διαδρομές εκτελέσιμου, script, και καταλόγου κατά την κατασκευή, και ελέγχει τη διαθεσιμότητα μοντέλων στον worker
Το overload με options ελέγχει κάθε απαιτούμενο μοντέλο, ένα προαιρετικό λεξικό, και την τοπική γραμματοσειρά πριν επιστρέψει τον adapter· λείποντα αρχεία ή άκυρες επιλογές εγείρουν EArgumentException πριν ξεκινήσει η αναγνώριση
Σχετικές διαδρομές μοντέλων, λεξικών, και γραμματοσειρών επιλύονται ως προς το ModelDirectory· απόλυτες διαδρομές μπορούν να δείχνουν σε αρχεία προμηθευμένα ξεχωριστά
Χρησιμοποιήστε μοντέλα συμβατά με το pipeline ανίχνευσης, ταξινόμησης, και αναγνώρισης CTC του RapidOCR· ένα μοντέλο από άλλο pipeline OCR μπορεί να απαιτεί διαφορετική προεπεξεργασία και δεν είναι επιλέξιμο μόνο και μόνο επειδή χρησιμοποιεί τη μορφή ONNX
Επιλογή μοντέλων ανά γλώσσα
Ο adapter διεργασίας Python συνεχίζει να χρησιμοποιεί ρητές διαδρομές THPDFRapidOCROptions· το ForLanguage ανήκει στο options record του εγγενούς DLL και δεν είναι μέθοδος του adapter Python
Προμηθεύστε τοπικά μοντέλα και λεξικά γλωσσών με tools/Install-RapidOCRModels.ps1 -Destination C:/OCR/models -Language ch,cyrillic, ή επιλέξτε -Language All για και τα εννέα γλωσσικά προφίλ
Ο helper ελέγχει pinned hashes SHA256 και τοποθετεί κάθε recognizer στο <profile>/recognition.onnx με το αντίστοιχο <profile>/dictionary.txt του· η αναγνώριση χρόνου εκτέλεσης παραμένει offline χωρίς αυτόματα downloads
Για Ρωσικά, χρησιμοποιήστε τα cyrillic/recognition.onnx και cyrillic/dictionary.txt· τα Απλοποιημένα Κινεζικά χρησιμοποιούν το προφίλ ch και τα Παραδοσιακά Κινεζικά το 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';
Τα παραπάνω βασικά ονόματα αρχείων detector και classifier ταιριάζουν με τα κοινόχρηστα μοντέλα του provisioning helper· παραδώστε μαζί το αντίστοιχο μοντέλο αναγνώρισης και λεξικό, και διαλέξτε ξεχωριστή μηχανή για σελίδες ή περιοχές που χρειάζονται άλλο γραφικό σύστημα
Επιλογές και προεπιλογές
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;
Αρχικοποιήστε το record με την THPDFRapidOCROptions.Default πριν παρακάμψετε πεδία
| Πεδίο | Προεπιλογή | Σημασία |
|---|---|---|
DetectionModel | ch_PP-OCRv4_det_mobile.onnx | Τοπικό μοντέλο ανίχνευσης |
RecognitionModel | ch_PP-OCRv4_rec_mobile.onnx | Τοπικό μοντέλο αναγνώρισης |
ClassificationModel | ch_ppocr_mobile_v2.0_cls_mobile.onnx | Απαιτείται μόνο όταν είναι ενεργοποιημένη η ταξινόμηση γωνίας |
CharacterDictionary | Κενό | Χρησιμοποιεί τα ενσωματωμένα μεταδεδομένα χαρακτήρων του μοντέλου αναγνώρισης· παραδώστε τοπικό λεξικό όταν το μοντέλο δεν έχει τέτοια μεταδεδομένα |
FontPath | Κενό | Επιλύεται σε %WINDIR%\Fonts\arial.ttf για το container αποτελεσμάτων του RapidOCR |
UseAngleClassifier | True | Ενεργοποιεί ταξινόμηση γωνίας κειμένου· όταν απενεργοποιηθεί, δεν απαιτείται ούτε περνάται μοντέλο ταξινόμησης |
IntraOpThreads | 1 | Νήματα intra-operation του ONNX, από 1 έως 64, με ταβάνι το πλήθος λογικών CPU του worker |
InterOpThreads | 1 | Νήματα inter-operation του ONNX με τα ίδια όρια |
MaxPixels | 16777216 | Προϋπολογισμός pixel εισόδου, από 1 έως 67.108.864 |
TimeoutMilliseconds | 60000 | Συνολικό deadline αιτήματος, από 1 έως 3.600.000 χιλιοστά του δευτερολέπτου |
Η γέφυρα επιλέγει ρητά το CPU backend του ONNX Runtime για όλα τα στάδια και απενεργοποιεί τα αυτόματα downloads· λείπει ενσωματωμένο λεξικό χαρακτήρων σημαίνει ότι απαιτείται προμηθευμένο τοπικό CharacterDictionary
Παράδειγμα με ρητά επιλεγμένα μοντέλα
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;
Αποτελέσματα, προϋπολογισμοί, και ακύρωση
Κάθε αίτημα σειριοποιεί το δανεισμένο bitmap σε έναν ιδιωτικό προσωρινό κατάλογο, ξεκινά έναν τοπικό worker Python, και καθαρίζει τα handles της διεργασίας και τα προσωρινά αρχεία όταν το αίτημα τελειώσει
Το overload με options ελέγχει το MaxPixels πριν τη σειριοποίηση bitmap· ο worker ελέγχει επίσης τις διαστάσεις εισόδου πριν φορτώσει τα μοντέλα και λαμβάνει τα όρια MaxWords και MaxTextCodeUnits του αιτήματος
Η γέφυρα ζητά συντεταγμένες χαρακτήρων και επικυρώνει τη γεωμετρία, την εμπιστοσύνη, και την κάλυψη κειμένου κάθε χαρακτήρα, και μετά εκδίδει κάθε πλήρη αναγνωρισμένη γραμμή με τα αρχικά εσωτερικά της κενά και τη στίξη της, τα περικλείοντα όρια σε pixel της αρχικής εικόνας, και μέση εμπιστοσύνη στο εύρος 0 έως 1
Κάθε εκδοθείσα γραμμή καταναλώνει μια θέση MaxWords· τα εσωτερικά κενά μετρούν στο MaxTextCodeUnits, και η δημοσίευση ολόκληρης γραμμής αποτρέπει το να μπερδέψει το text layer την απόσταση γραμμάτων με το κενό λέξης
Η απόσταση διατηρείται από το κείμενο γραμμής του recognizer· κείμενο που η ανίχνευση διαχώρισε σε ξεχωριστά boxes εξακολουθεί να βασίζεται στη χωρική συλλογιστική κενού λέξης, και εξωτερικοί readers PDF μπορεί να ανακατασκευάσουν ή να συμπτύξουν επαναλαμβανόμενα κενά κατά την εξαγωγή
Οι συμπληρωματικοί χαρακτήρες καταναλώνουν δύο μονάδες UTF-16· άκυρες συντεταγμένες, εμπιστοσύνη, χαρακτήρες ελέγχου, ή εξαντλημένοι προϋπολογισμοί αποτυγχάνουν την αναγνώριση και εκκαθαρίζουν τα μερικά αποτελέσματα
Μια κενή σελίδα πετυχαίνει με κενό πίνακα λέξεων· δεν παρέχεται εγγενής baseline, οπότε το text layer χρησιμοποιεί το υπάρχον γεωμετρικό fallback του
Η ακύρωση, το timeout, και τα μεγέθη εξόδου ερωτώνται κάθε 25 χιλιοστά του δευτερολέπτου· ένα Windows job περικλείει τον worker και τυχόν θυγατρικές διεργασίες interpreter, και ο τερματισμός περιμένει έως πέντε επιπλέον δευτερόλεπτα για τον καθαρισμό διεργασιών
Η ApplyLoadedOCRTextLayer δημοσιεύει όλες τις επιλεγμένες σελίδες ατομικά μετά την επιτυχή αναγνώριση
Η έξοδος TSV περιορίζεται στα 64 MiB και η διαγνωστική έξοδος στο 1 MiB· οι προϋπολογισμοί εισόδου και εξόδου δεν επιβάλλουν σκληρό ταβάνι στη χρήση μνήμης μοντέλων ή συμπερασμάτων ONNX
Η αρχικοποίηση μοντέλων γίνεται σε νέα διεργασία Python για κάθε αίτημα και μετράει στο deadline
Επικύρωση
Οι κοινοί runners adapter Delphi και FPC καλύπτουν preflight μοντέλων, προσαρμοσμένες διαδρομές, προαιρετική ταξινόμηση, Unicode, προϋπολογισμούς, αποτυχία worker, ακύρωση, και timeout· οι προαιρετικές παράμετροι RapidOCR τους ενεργοποιούν για πραγματικούς ελέγχους αναγνώρισης και round-trip αναζητήσιμου PDF
Χρησιμοποιήστε τα Tests/Delphi/Run-TesseractRecognitionTests.ps1 ή Tests/Delphi/Run-TesseractFPCRecognitionTests.ps1 με -RapidOCRPython, -RapidOCRModelDirectory, -RapidOCRDetectionModel, και -RapidOCRRecognitionModel
Δείτε τα Αναζητήσιμα επίπεδα κειμένου OCR για επιλογές απόδοσης, αντιστοίχιση κειμένου Unicode PDF, ομαδοποίηση optional-content, και όρια συμμόρφωσης