OCR externo em trabalhos JSON e ABI C
A operação ocr.layer aceita builtin-ascii, tesseract-cli, tesseract-dll, rapidocr-cli e rapidocr-dll; omitir engine preserva o default incorporado de ASCII
A descoberta de capacidades lista estes adaptadores 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 trabalho de ficheiros e acrescente caminhos input e output, ou passe-o diretamente a hpdf_document_execute_json_v1 com um handle carregado e callbacks binários/de resultados
| Motor | engineOptions obrigatórias | engineOptions opcionais |
|---|---|---|
| builtin-ascii | Nenhuma | engineOptions tem de estar ausente ou ser um objeto vazio |
| 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 |
Opções e recursos locais
Os motores externos exigem uma engineOptions explícita com valor de objeto; chaves desconhecidas, tipos JSON errados, caminhos ou strings de linguagens contendo NUL e valores obrigatórios vazios são rejeitados
Tesseract tem por defeito 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 restantes modos até 13 são aceites
engineMode aceita 0 a 3; os ficheiros de trained data têm de suportar o modo escolhido, e expressões de linguagens multilingues do Tesseract como eng+fra exigem os modelos locais correspondentes
O RapidOCR CLI usa os nomes de modelos THPDFRapidOCROptions.Default nativos e define ambos os limites de threads como 1 por defeito; aceita caminhos explícitos de dicionários e de tipos de letra, e a ponte configurada tem de implementar o contrato local de TSV
O RapidOCR DLL começa com THPDFRapidOCRDLLOptions.ForLanguage(language), com default ch; os perfis de linguagens selecionam o modelo de reconhecimento, o dicionário e a direção de leitura, e opções explícitas podem sobrepor essas seleções
Os nomes de ficheiros de modelos resolvem-se sob modelDirectory de acordo com os adaptadores nativos; o bitness da biblioteca tem de corresponder ao processo host, enquanto um motor CLI corre como um processo local separado
Forneça e selecione explicitamente estes recursos; a operação não instala motores, não descarrega modelos, não procura executáveis arbitrários nem usa um serviço OCR remoto
Orçamentos e cancelamento
timeoutMilliseconds tem por defeito 60,000 e aceita inteiros de 1 a 3,600,000; o timeout efetivo do adaptador é limitado por budget.timeMilliseconds
maxPixels tem por defeito 16,777,216 e aceita inteiros de 1 a 67,108,864; o teto efetivo dele é o mínimo entre o valor pedido, budget.pixels e budget.memoryBytes / 16
O teto efetivo de píxeis do motor também limita a renderização de páginas OCR antes do reconhecimento; os orçamentos de palavras, de conteúdo e de texto UTF-16 são limitados pela quota de memória da operação
Estes limites delimitam buffers configurados e recursos da operação; a alocação de modelos de DLLs externas não constitui uma quota estrita de RSS do processo
Chamadas nativas tomam emprestado Document.OperationCancellationToken para renderização e reconhecimento; o cancelamento de callbacks C é consultado nos checkpoints cooperativos de operações, de entrada e de saída, e um motor externo em execução pode continuar até ao timeout dele ou ao próximo checkpoint de callbacks
Falhas locais de CLIs, saída TSV inválida ou incompleta e timeouts de adaptadores rejeitam a operação; o tempo configurado da operação e os limites de píxeis mantêm a categoria estruturada de falhas 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 adaptador nativo
minimumConfidence tem de ser um número de 0 a 1, e skipPagesWithText e replaceExisting têm de ser Booleans JSON
Palavras Unicode aceites tornam-se texto invisível com mapeamentos ToUnicode e geometria de páginas fonte; a imagem de digitalização permanece na saída, e o ficheiro fonte permanece inalterado a menos que quem chama publique intencionalmente nesse mesmo caminho
Trabalhos de ficheiros preservam um destino existente em caso de falha e publicam através de um ficheiro de staging no mesmo diretório; mutações da ABI C confirmam depois de a entrega de bytes PDF e do resultado JSON ter sucesso, com rollback em falha e descarte por quem chama de bytes já entregues
Aceitação
Tests/Delphi/Run-JobOCRTests.ps1 corre quatro perfis de despacho de adaptadores, configuração malformada, orçamentos de píxeis e de tempo, rejeição de palavras parciais, falha de processos, timeout e preservação de destinos/fontes em Win32 e Win64
Fornecer caminhos reais de executáveis e de modelos do Tesseract exercita reconhecimento vivo; leitores independentes de pypdf e MuPDF verificam texto pesquisável Unicode e píxeis visíveis de digitalização inalterados, enquanto a verificação opcional real da DLL da ABI Win64 verifica callbacks parciais e rollback de operações falhadas
Veja as operações de documentos, os adaptadores Tesseract, os modelos locais RapidOCR, as bibliotecas nativas RapidOCR e as camadas de texto OCR pesquisáveis