OCR externo em jobs JSON e C ABI

A operação ocr.layer aceita builtin-ascii, tesseract-cli, tesseract-dll, rapidocr-cli e rapidocr-dll; omitir engine preserva o default built-in ASCII

A descoberta de capabilities lista esses adapters suportados, sem afirmar que programas externos, bibliotecas, dados de linguagens ou modelos ONNX estão instalados no host de execução

Exemplo 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}}

Coloque este objeto no array operations de um file job e adicione paths de input e output, ou passe-o diretamente a hpdf_document_execute_json_v1 com um handle carregado e callbacks binários/de resultado

EngineengineOptions exigidosengineOptions opcionais
builtin-asciiNenhumengineOptions precisa estar ausente ou ser um objeto vazio
tesseract-cliexecutablePath, tessDataDirectorylanguage, pageSegMode, engineMode, timeoutMilliseconds, maxPixels
tesseract-dlllibraryPath, tessDataDirectorylanguage, pageSegMode, engineMode, timeoutMilliseconds, maxPixels
rapidocr-clipythonExecutable, bridgeScript, modelDirectorydetectionModel, recognitionModel, classificationModel, characterDictionary, fontPath, useAngleClassifier, intraOpThreads, interOpThreads, timeoutMilliseconds, maxPixels
rapidocr-dlllibraryPath, modelDirectorylanguage, detectionModel, recognitionModel, classificationModel, characterDictionary, useAngleClassifier, rightToLeft, threads, timeoutMilliseconds, maxPixels

Opções e recursos locais

Engines externos exigem um engineOptions explícito com valor de objeto; chaves desconhecidas, tipos JSON incorretos, paths ou strings de linguagens contendo NUL, e valores exigidos vazios são rejeitados

Tesseract tem default language=eng, pageSegMode=3 e engineMode=3; os modos de segmentação 0 e 2 não reconhecem texto e são rejeitados, enquanto os demais modos até 13 são aceitos

engineMode aceita de 0 a 3; os arquivos de trained data precisam suportar o modo escolhido, e expressões multilíngues de linguagens Tesseract como eng+fra exigem os modelos locais correspondentes

RapidOCR CLI usa os nomes default de modelos do THPDFRapidOCROptions.Default nativo e define ambos os limites de threads como 1; ele aceita paths de dicionário e fontes fornecidos explicitamente, e a ponte configurada precisa implementar o contrato local de TSV

RapidOCR DLL começa com THPDFRapidOCRDLLOptions.ForLanguage(language), com default ch; perfis de linguagens selecionam modelo de reconhecimento, dicionário e direção de leitura, e opções explícitas podem sobrepôr essas seleções

Nomes de arquivos de modelos resolvem sob modelDirectory conforme os adapters nativos; a bitness das bibliotecas precisa corresponder ao processo host, enquanto um engine CLI roda como um processo local separado

Provisione e selecione esses recursos explicitamente; a operação não instala engines, não baixa modelos, não busca executáveis arbitrários nem usa um serviço de OCR remoto

Orçamentos e cancelamento

timeoutMilliseconds tem default 60.000 e aceita inteiros de 1 a 3.600.000; o timeout efetivo do adapter é limitado por budget.timeMilliseconds

maxPixels tem default 16.777.216 e aceita inteiros de 1 a 67.108.864; seu teto efetivo é o mínimo entre o valor solicitado, budget.pixels e budget.memoryBytes / 16

O teto efetivo de pixels do engine também limita o rendering de páginas OCR antes do reconhecimento; os orçamentos de palavras, conteúdo e texto UTF-16 são limitados pela cota de memória da operação

Esses limites delimitam buffers configurados e recursos da operação; a alocação de modelos de DLLs externas não constitui uma cota estrita de RSS do processo

Chamadas nativas emprestam Document.OperationCancellationToken para rendering e reconhecimento; o cancelamento de callbacks C é polled nos checkpoints cooperativos de operação, entrada e saída, e um engine externo em execução pode continuar até o timeout dele ou o próximo checkpoint de callbacks

Falhas locais de CLIs, saída TSV inválida ou incompleta, e timeouts de adapters rejeitam a operação; os limites configurados de tempo e pixels da operação retêm a categoria estruturada de falha de orçamento

Saída e comportamento transacional

O resultado reporta engine, recognizedPages, skippedPages, acceptedWords e droppedWords; o campo engine contém o nome descritivo do adapter nativo

minimumConfidence precisa ser um número de 0 a 1, e skipPagesWithText e replaceExisting precisam ser Booleans JSON

Palavras Unicode aceitas viram texto invisível com mapeamentos ToUnicode e a geometria da página de origem; a imagem do scan permanece na saída, e o arquivo de origem permanece inalterado, a menos que o chamador intencionalmente publique no mesmo caminho de arquivo

File jobs preservam um destino existente em falha e publicam através de um arquivo de staging no mesmo diretório; mutações da C ABI commitam depois que os bytes do PDF e a entrega do resultado JSON tiverem sucesso ambos, com rollback em falha e descarte pelo chamador dos bytes já entregues

Aceitação

Tests/Delphi/Run-JobOCRTests.ps1 executa quatro perfis de despacho de adapters, configuração malformada, orçamentos de pixels e tempo decorrido, rejeição de palavras parciais, falha de processos, timeout e preservação de destino/origem em Win32 e Win64

Fornecer executável Tesseract real e paths de modelos exercita reconhecimento vivo; readers independentes pypdf e MuPDF verificam texto pesquisável Unicode e pixels visíveis de scans inalterados, enquanto a checagem opcional real da DLL ABI Win64 verifica callbacks parciais e rollback de operações com falha

Veja operações de documentos, adapters Tesseract, modelos locais RapidOCR, bibliotecas nativas RapidOCR e camadas de texto OCR pesquisáveis