OCR externo en trabajos JSON y C ABI
La operación ocr.layer acepta builtin-ascii, tesseract-cli, tesseract-dll, rapidocr-cli y rapidocr-dll; omitir engine conserva el valor por defecto ASCII integrado
El descubrimiento de capacidades lista estos adaptadores soportados, sin afirmar que los programas externos, bibliotecas, datos de idioma o modelos ONNX estén instalados en el host de ejecución
Ejemplo con 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}}
Coloca este objeto en el array operations de un file job y agrega los paths de input y output, o pásalo directamente a hpdf_document_execute_json_v1 con un handle cargado y callbacks binarios y de resultado
| Motor | engineOptions requeridas | engineOptions opcionales |
|---|---|---|
| builtin-ascii | Ninguna | engineOptions debe estar ausente o ser un objeto vacío |
| 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 |
Opciones y recursos locales
Los motores externos exigen un engineOptions explícito con valor de objeto; las claves desconocidas, los tipos JSON incorrectos, los paths o cadenas de idioma con NUL y los valores requeridos vacíos se rechazan
Tesseract usa por defecto language=eng, pageSegMode=3 y engineMode=3; los modos de segmentación 0 y 2 no reconocen texto y se rechazan, mientras que los modos restantes hasta 13 se aceptan
engineMode acepta valores de 0 a 3; los archivos trained-data deben soportar el modo elegido, y las expresiones de idioma multilingües de Tesseract como eng+fra requieren los modelos locales correspondientes
RapidOCR CLI usa los nombres de modelo nativos de THPDFRapidOCROptions.Default y fija ambos límites de threads en 1; acepta paths de diccionario y fuente suministrados explícitamente, y el bridge configurado debe implementar el contrato TSV local
RapidOCR DLL arranca con THPDFRapidOCRDLLOptions.ForLanguage(language), por defecto ch; los perfiles de idioma seleccionan modelo de reconocimiento, diccionario y dirección de lectura, y las opciones explícitas pueden sobrescribir esas selecciones
Los nombres de archivos de modelo se resuelven bajo modelDirectory según los adaptadores nativos; el bitness de la biblioteca debe coincidir con el proceso host, mientras que un motor CLI corre como proceso local separado
Provisiona y selecciona estos recursos de forma explícita; la operación no instala motores, descarga modelos, busca ejecutables arbitrarios ni usa un servicio OCR remoto
Presupuestos y cancelación
timeoutMilliseconds vale 60,000 por defecto y acepta enteros de 1 a 3,600,000; el timeout efectivo del adaptador queda limitado por budget.timeMilliseconds
maxPixels vale 16,777,216 por defecto y acepta enteros de 1 a 67,108,864; su tope efectivo es el mínimo entre el valor solicitado, budget.pixels y budget.memoryBytes / 16
El tope efectivo de píxeles del motor también limita el rendering de la página OCR antes del reconocimiento; los presupuestos de palabras, contenido y texto UTF-16 quedan limitados por la asignación de memoria de la operación
Estos límites acotan los buffers configurados y los recursos de la operación; la asignación de modelos de la DLL externa no constituye una cuota estricta de RSS del proceso
Las llamadas nativas toman prestado Document.OperationCancellationToken para rendering y reconocimiento; la cancelación de callbacks C se consulta por polling en checkpoints cooperativos de operación, entrada y salida, y un motor externo en ejecución puede continuar hasta su timeout o el siguiente checkpoint de callback
Los fallos locales del CLI, la salida TSV inválida o incompleta y los timeouts del adaptador rechazan la operación; los límites configurados de tiempo y píxeles de la operación conservan la categoría estructurada de fallo de presupuesto
Salida y comportamiento transaccional
El resultado reporta engine, recognizedPages, skippedPages, acceptedWords y droppedWords; el campo engine contiene el nombre descriptivo del adaptador nativo
minimumConfidence debe ser un número de 0 a 1, y skipPagesWithText y replaceExisting deben ser booleanos JSON
Las palabras Unicode aceptadas se convierten en texto invisible con mapeos ToUnicode y geometría de la página de origen; la imagen del escaneo permanece en la salida y el archivo fuente queda sin cambios salvo que el caller publique intencionalmente sobre ese mismo path
Los file jobs preservan un destino existente ante fallos y publican mediante un archivo de staging en el mismo directorio; las mutaciones de la C ABI se confirman solo cuando la entrega de bytes PDF y del resultado JSON tiene éxito, con rollback ante fallo y descarte a cargo del caller de los bytes ya entregados
Aceptación
Tests/Delphi/Run-JobOCRTests.ps1 ejecuta cuatro perfiles de dispatch de adaptadores, configuración malformada, presupuestos de píxeles y tiempo transcurrido, rechazo de palabras parciales, fallo de proceso, timeout y preservación de destino/fuente en Win32 y Win64
Suministrar ejecutable y paths de modelo reales de Tesseract ejercita reconocimiento en vivo; los lectores independientes pypdf y MuPDF verifican el texto Unicode buscable y los píxeles visibles del escaneo sin cambios, mientras que la comprobación opcional de la DLL real de la ABI Win64 verifica callbacks parciales y rollback de operaciones fallidas
Consulta operaciones de documento, adaptadores Tesseract, modelos locales RapidOCR, bibliotecas nativas RapidOCR y capas de texto OCR buscable