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

EngineRequired engineOptionsOptional engineOptions
builtin-asciiBrakengineOptions musi być nieobecne albo pustym obiektem
tesseract-cliexecutablePath, tessDataDirectorylanguage, pageSegMode, engineMode, timeoutMilliseconds, maxPixels
tesseract-dlllibraryPath, tessDataDirectorylanguage, pageSegMode, engineMode, maxPixels
rapidocr-cliexecutablePath, modelDirectorylanguage, timeoutMilliseconds, maxPixels, maxSideLen
rapidocr-dlllibraryPath, modelDirectorylanguage, 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