External OCR in JSON and C ABI Jobs
Operace ocr.layer přijme builtin-ascii, tesseract-cli, tesseract-dll, rapidocr-cli a rapidocr-dll; vynechání engine zachová vestavěný ASCII default
Odhalení schopností tyhle podporované adaptéry vypíše, aniž by tvrdilo, že externí programy, knihovny, jazyková data či ONNX modely jsou na prováděcím hostiteli instalované
Příklad 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}}
Objekt umístěte do pole operations file jobu a přidejte cesty input a output, případně ho předejte přímo do hpdf_document_execute_json_v1 s načteným handlem a binárními/výsledkovými callbacky
| Engine | Povinné engineOptions | Volitelné engineOptions |
|---|---|---|
| builtin-ascii | Žádné | engineOptions musí chybět, či být prázdný objekt |
| tesseract-cli | executablePath, tessDataDirectory | language, pageSegMode, engineMode, timeoutMilliseconds, maxPixels |
| tesseract-dll | libraryPath, tessDataDirectory | language, pageSegMode, engineMode, timeoutMilliseconds, maxPixels |
| rapidocr-cli | pythonExecutable, bridgeScript, modelDirectory | detectionModel, recognitionModel, classificationModel, characterDictionary, fontPath, useAngleClassifier, intraOpThreads, interOpThreads, timeoutMilliseconds, maxPixels |
| rapidocr-dll | libraryPath, modelDirectory | language, detectionModel, recognitionModel, classificationModel, characterDictionary, useAngleClassifier, rightToLeft, threads, timeoutMilliseconds, maxPixels |
Volby a lokální resource
Externí engine vyžadují explicitní objektový engineOptions; neznámé klíče, špatné JSON typy, cesty či jazykové řetězce obsahující NUL a prázdné povinné hodnoty se odmítají
Tesseract defaultuje na language=eng, pageSegMode=3 a engineMode=3; segmentační režimy 0 a 2 nerozeznávají text a odmítnou se, zatímco zbývající režimy do 13 se přijímají
engineMode přijímá 0 až 3; soubory natrénovaných dat musí zvolený režim podporovat a vícejazyčné jazykové výrazy Tesseract jako eng+fra vyžadují odpovídající lokální modely
RapidOCR CLI použije nativní modelové názvy THPDFRapidOCROptions.Default a defaultuje oba thread limity na 1; přijme explicitně dodané cesty slovníku i fontu a nakonfigurovaný most musí implementovat lokální TSV kontrakt
RapidOCR DLL startuje přes THPDFRapidOCRDLLOptions.ForLanguage(language), defaultně ch; jazykové profily vyberou model rozpoznávání, slovník i směr čtení a explicitní volby je můžou přebít
Názvy modelových souborů se rozřeší pod modelDirectory podle nativních adaptérů; bitovost knihovny se musí shodovat s host procesem, zatímco CLI engine běží jako samostatný lokální proces
Ty resource zajeďte a vyberte explicitně; operace neinstaluje engine, nestahuje modely, nehledá libovolné spustitelné soubory ani nepoužívá vzdálenou OCR službu
Rozpočty a zrušení
timeoutMilliseconds defaultuje na 60 000 a přijímá celá čísla od 1 do 3 600 000; účinný timeout adaptéru se ořeže přes budget.timeMilliseconds
maxPixels defaultuje na 16 777 216 a přijímá celá čísla od 1 do 67 108 864; jeho účinný strop je minimum z vyžádané hodnoty, budget.pixels a budget.memoryBytes / 16
Účinný pixelový strop engine omezuje i render OCR stránky, dřív než rozpoznání; rozpočty slov, obsahu i UTF-16 textu se ořežou paměťovým příspěvkem operace
Ty limity ohraničují nakonfigurované buffery i resource operace; alokace modelu externí DLL nepředstavuje přísnou kvótu RSS procesu
Nativní volání si půjčí Document.OperationCancellationToken pro render i rozpoznání; cancellation callbacky C se dotazují na kooperativních checkpointech operace, vstupu i výstupu a běžící externí engine může pokračovat do svého timeoutu či dalšího callback checkpointu
Lokální selhání CLI, neplatný či nekompletní TSV výstup a timeouty adaptérů operaci odmítnou; nakonfigurované limity času i pixelů operace si uchovávají kategorii strukturovaného selhání rozpočtu
Výstup a chování transakcí
Výsledek reportuje engine, recognizedPages, skippedPages, acceptedWords a droppedWords; pole engine obsahuje popisný název nativního adaptéru
minimumConfidence musí být číslo od 0 do 1 a skipPagesWithText i replaceExisting musí být JSON Booleovské hodnoty
Přijatá Unicode slova se stanou neviditelným textem s mapováními ToUnicode i geometrií zdrojové stránky; skenovací obrázek zůstává ve výstupu a zdrojový soubor zůstává nezměněný, ledaže volající záměrně publikuje do téže cesty
File joby zachovají existující cíl při selhání a publikují přes staging soubor ve stejném adresáři; mutace C ABI se zapíší poté, co uspěje dodání jak bajtů PDF, tak JSON výsledku, s rollbackem při selhání a likvidací už dodaných bajtů volajícím
Akceptace
Tests/Delphi/Run-JobOCRTests.ps1 spustí čtyři dispatch profily adaptérů, poškozenou konfiguraci, rozpočty pixelů i uplynulého času, odmítání částečných slov, selhání procesu, timeout i zachování cíle/zdroje na Win32 a Win64
Dodání skutečné cesty spustitelného souboru i modelů Tesseract vyzkouší živé rozpoznání; nezávislé čtečky pypdf a MuPDF verifikují prohledávatelný Unicode text i nezměněné viditelné skenové pixely a volitelná skutečná kontrola Win64 ABI DLL verifikuje částečné callbacky i rollback neúspěšné operace
Viz dokumentové operace, adaptéry Tesseract, lokální modely RapidOCR, nativní knihovny RapidOCR a prohledávatelné OCR textové vrstvy