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, las bibliotecas, los datos de idioma o los 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 trabajo de archivo y añade las rutas input y output, o pásaselo directamente a hpdf_document_execute_json_v1 junto con un handle cargado y los callbacks de resultado binario

MotorengineOptions obligatoriasengineOptions opcionales
builtin-asciiNingunaengineOptions debe estar ausente o ser un objeto vacío
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

Opciones y recursos locales

Los motores externos exigen un objeto engineOptions explícito; se rechazan las claves desconocidas, los tipos JSON incorrectos, las rutas o cadenas de idioma que contienen NUL y los valores obligatorios vacíos

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 el resto de modos hasta el 13 se aceptan

engineMode acepta valores de 0 a 3; los ficheros de 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 emplea los nombres de modelo nativos de THPDFRapidOCROptions.Default y fija por defecto ambos límites de hilos en 1; acepta rutas de diccionario y de fuente suministradas 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 el modelo de reconocimiento, el diccionario y el sentido de lectura, y las opciones explícitas pueden sobrescribir esas selecciones

Los nombres de fichero de modelo se resuelven bajo modelDirectory según los adaptadores nativos; el bitness de la biblioteca debe coincidir con el del proceso anfitrión, mientras que un motor CLI se ejecuta como proceso local independiente

Provisiona y selecciona estos recursos de forma explícita; la operación no instala motores, no descarga modelos, no busca ejecutables arbitrarios ni recurre a 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 techo efectivo es el mínimo entre el valor solicitado, budget.pixels y budget.memoryBytes / 16

El techo efectivo de píxeles del motor también limita el rendering de la página OCR antes del reconocimiento; los presupuestos de palabras, de contenido y de texto UTF-16 quedan acotados 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 sobre el RSS del proceso

Las llamadas nativas toman prestado Document.OperationCancellationToken para el rendering y el reconocimiento; la cancelación por callback de C se sondea en checkpoints cooperativos de operación, entrada y salida, y un motor externo en marcha puede continuar hasta su timeout o hasta el siguiente checkpoint de callback

Los fallos del CLI local, una salida TSV inválida o incompleta y los timeouts del adaptador rechazan la operación; los límites configurados de tiempo y de píxeles de la operación conservan la categoría estructurada de fallo de presupuesto

Salida y comportamiento transaccional

El resultado informa de 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 la geometría de la página de origen; la imagen escaneada permanece en la salida y el fichero de origen no se modifica, salvo que el llamador publique deliberadamente sobre esa misma ruta

Los trabajos de archivo conservan un destino existente en caso de fallo y publican mediante un fichero de staging en el mismo directorio; las mutaciones del C ABI se confirman solo cuando la entrega de los bytes del PDF y la del resultado JSON han tenido éxito, con rollback en caso de fallo y liberación por parte del llamador de los bytes ya entregados

Aceptación

Tests/Delphi/Run-JobOCRTests.ps1 ejecuta cuatro perfiles de despacho de adaptadores, configuración malformada, presupuestos de píxeles y de tiempo transcurrido, rechazo de palabras parciales, fallo de proceso, timeout y preservación de destino/origen en Win32 y Win64

Suministrar rutas reales del ejecutable y de los modelos de Tesseract ejercita el reconocimiento en vivo; lectores independientes pypdf y MuPDF verifican el texto Unicode buscable y los píxeles visibles del escaneo intactos, mientras que la comprobación opcional con la DLL real del ABI en Win64 verifica callbacks parciales y el rollback de operaciones fallidas

Consulta operaciones de documento, adaptadores Tesseract, modelos locales de RapidOCR, bibliotecas nativas de RapidOCR y capas de texto OCR buscables