Zewnętrzny OCR w zadaniach JSON i C ABI
Operacja ocr.layer przyjmuje builtin-ascii, tesseract-cli, tesseract-dll, rapidocr-cli i rapidocr-dll; pominięcie engine zachowuje domyślny wbudowany ASCII
Odkrywanie możliwości listuje te wspierane adaptery, bez asercji, że zewnętrzne programy, biblioteki, dane językowe albo modele ONNX są zainstalowane na hoście wykonania
Przykład Tesseract
{"schemaVersion":1,"type":"ocr.layer","pages":[0],"dpi":300,
"minimumConfidence":0.7,"skipPagesWithText":true,"replaceExisting":false,
"engine":"tesseract-cli",
"engineOptions":{"executablePath":"C:/OCR/tesseract.exe",
"tessDataDirectory":"C:/OCR/tessdata","language":"eng",
"pageSegMode":6,"engineMode":3,"timeoutMilliseconds":30000,
"maxPixels":16777216}}
Umieść ten obiekt w tablicy operations zadania plikowego i dodaj ścieżki input i output, albo przekaż go bezpośrednio do hpdf_document_execute_json_v1 z wczytanym uchwytem i callbackami binarnego/wyniku
| Engine | Required engineOptions | Optional engineOptions |
|---|---|---|
| builtin-ascii | Brak | engineOptions musi być nieobecne albo pustym obiektem |
| tesseract-cli | executablePath, tessDataDirectory | language, pageSegMode, engineMode, timeoutMilliseconds, maxPixels |
| tesseract-dll | libraryPath, tessDataDirectory | language, pageSegMode, engineMode, maxPixels |
| rapidocr-cli | executablePath, modelDirectory | language, timeoutMilliseconds, maxPixels, maxSideLen |
| rapidocr-dll | libraryPath, modelDirectory | language, maxPixels, maxSideLen |
Opcje i zasoby lokalne
Zewnętrzne silniki wymagają jawnego engineOptions będącego obiektem; nieznane klucze, niepoprawne typy JSON, ścieżki albo łańcuchy językowe zawierające NUL i puste wymagane wartości są odrzucane
Tesseract domyślnie używa language=eng, pageSegMode=3 i engineMode=3; tryby segmentacji 0 i 2 nie rozpoznają tekstu i są odrzucane, podczas gdy pozostałe tryby do 13 są akceptowane
engineMode przyjmuje od 0 do 3; pliki danych uczących muszą wspierać wybrany tryb, a wielojęzyczne wyrażenia językowe Tesseract takie jak eng+fra wymagają odpowiadających lokalnych modeli
RapidOCR CLI używa natywnych nazw modeli THPDFRapidOCROptions.Default i domyślnie ustawia oba limity wątków na 1; przyjmuje jawne ścieżki słowników i fontów, a skonfigurowany most musi implementować lokalny kontrakt TSV
RapidOCR DLL startuje przez THPDFRapidOCRDLLOptions.ForLanguage(language), domyślnie ch; profile językowe wybierają model rozpoznawania, słownik i kierunek czytania, a jawne opcje mogą nadpisać te selekcje
Nazwy plików modeli są rozwiązywane pod modelDirectory według natywnych adapterów; bitowość biblioteki musi pasować do procesu hosta, podczas gdy silnik CLI wykonuje się jako osobny lokalny proces
Zaopatrz i wybierz te zasoby jawnie; operacja nie instaluje silników, nie pobiera modeli, nie szuka dowolnych plików wykonywalnych ani nie używa zdalnej usługi OCR
Budżety i anulowanie
timeoutMilliseconds domyślnie 60,000 i przyjmuje liczby całkowite od 1 do 3,600,000; efektywny timeout adaptera jest ograniczony przez budget.timeMilliseconds
maxPixels domyślnie 16,777,216 i przyjmuje liczby całkowite od 1 do 67,108,864; jego efektywny limit to minimum z żądanej wartości, budget.pixels i budget.memoryBytes / 16
Efektywny limit pikseli silnika ogranicza także renderowanie stron OCR przed rozpoznawaniem; budżety słów, zawartości i tekstu UTF-16 są ograniczone pulą pamięci operacji
Te limity ograniczają skonfigurowane bufory i zasoby operacji; alokacja modelu zewnętrznej DLL nie stanowi ścisłej kwoty RSS procesu
Natywne wywołania pożyczają Document.OperationCancellationToken dla renderowania i rozpoznawania; anulowanie callbacka C jest odpytywane na kooperatywnych checkpointach operacji, wejścia i wyjścia, a działający zewnętrzny silnik może kontynuować do swojego timeoutu albo następnego checkpointa callbacka
Lokalne niepowodzenia CLI, niepoprawne albo niekompletne wyjście TSV i timeouty adapterów odrzucają operację; skonfigurowane limity czasu i pikseli operacji zachowują kategorię ustrukturyzowanego niepowodzenia budżetu
Wyjście i zachowanie transakcji
Wynik raportuje engine, recognizedPages, skippedPages, acceptedWords i droppedWords; pole engine zawiera opisową nazwę natywnego adaptera
minimumConfidence musi być liczbą od 0 do 1, a skipPagesWithText i replaceExisting muszą być Boolean JSON
Przyjęte słowa Unicode stają się niewidzialnym tekstem z mapowaniami ToUnicode i geometrią strony źródła; obraz skanu pozostaje w wyjściu, a plik źródła pozostaje niezmieniony, chyba że wywołujący celowo opublikuje do tej samej ścieżki pliku
Joby plikowe zachowują istniejący cel przy niepowodzeniu i publikują przez plik staging w tym samym katalogu; mutacje C ABI zatwierdzają po powodzeniu zarówno dostarczenia bajtów PDF, jak i wyniku JSON, z rollbackiem po niepowodzeniu i pozostawieniem już dostarczonych bajtów wywołującemu
Akceptacja
Tests/Delphi/Run-JobOCRTests.ps1 wykonuje cztery profile dyspozycji adapterów, zniekształconą konfigurację, budżety pikseli i czasu, odrzucanie częściowych słów, niepowodzenie procesu, timeout oraz zachowanie celu/źródła na Win32 i Win64
Dostarczenie rzeczywistych ścieżek wykonywalnych i modeli Tesseract ćwiczy żywe rozpoznawanie; niezależne czytniki pypdf i MuPDF weryfikują przeszukiwalny tekst Unicode i niezmienione widoczne piksele skanu, podczas gdy opcjonalna rzeczywista kontrola DLL ABI Win64 weryfikuje częściowe callbacki i rollback nieudanej operacji
Zobacz operacje dokumentów, adaptery Tesseract, lokalne modele RapidOCR, natywne biblioteki RapidOCR i przeszukiwalne warstwy tekstu OCR