hOCR es un estándar abierto de representación de datos para texto formateado obtenido mediante reconocimiento óptico de caracteres (OCR). La definición codifica texto, estilo, información de diseño, métricas de confianza de reconocimiento y otra información utilizando el Lenguaje de Marcado Extensible (XML) en forma de Lenguaje de Marcado de Hipertexto (HTML) o XHTML . [ 1 ]
Software
El siguiente software OCR puede generar el resultado del reconocimiento como un archivo hOCR:
- OCRopus
- Teseracto
- Cuneiforme
- ghostscript [ 2 ]
- HebOCR
- gcv2hocr
- Lector de imágenes g
Ejemplo
El siguiente ejemplo es un extracto de un archivo hOCR:
... < p class = "ocr_par" lang = "deu" title = "bbox930" > < span class = "ocr_line" title = " bbox 348 797 1482 838; baseline -0.009 -6" > < span class = "ocrx_word" title = "bbox 348 805 402 832; x_wconf 93" > Die </span> < span class = " ocrx_word" title = "bbox 421 804 697 832; x_wconf 90" > Darlehenssumme </span> < span class = "ocrx_word" title = "bbox 717 803 755 831; x_wconf 96" > ist </span> < span class = " ocrx_word" title = " bbox 773 803 802 831; x_wconf 96" > en </ span > < abarca clase = "ocrx_word" title = "bbox 821 803 917 830; x_wconf 96" > ihrem </ span > < span class = "ocrx_word" title = "bbox 935 799 1180 838; x_wconf 95" > ursprünglichen </ span > < span class = "ocrx_word" title = "bbox 1199 797 1343 832; x_wconf 95" > Umfange </ span > < span class = "ocrx_word" title = "bbox 1362 805 1399 823; x_wconf 95" > zu </ span > < span class = "ocrx_word" title = "bbox 1417 x_wconf 96" > ver- </ span > </ span > ... El texto reconocido se almacena en nodos de texto normales del archivo HTML. La distribución en líneas y palabras separadas se realiza mediante las etiquetas span circundantes . Además, se utilizan las entidades HTML habituales, por ejemplo, la etiqueta p para un párrafo. Se proporciona información adicional en las propiedades, tales como:
- diferentes elementos de diseño como "ocr_par", "ocr_line", "ocrx_word"
- Información geométrica para cada elemento con un cuadro delimitador "bbox".
- información lingüística "lang"
- algunos valores de confianza "x_wconf"
bbox
General
La disposición del objeto de cuadro delimitador u objeto bbox es gramática.
- nombre-de-la-propiedad = "bbox"
- valor-de-la-propiedad = uint uint uint uint
Ejemplo
bbox 0 0 100 200
El bbox, abreviatura de "bounding box" (caja delimitadora), de un elemento es un recuadro rectangular que rodea a dicho elemento y que está definido por la esquina superior izquierda (x0, y0) y la esquina inferior derecha (x1, y1).
Los valores se refieren a la esquina superior izquierda de la imagen del documento y se miden en píxeles.
El orden de los valores es x0 y0 x1 y1 = "izquierda arriba derecha abajo"
Uso
Utilice x_bboxes a continuación para los cuadros delimitadores de caracteres.
No utilice bbox a menos que el cuadro delimitador del componente de diseño sea, de hecho, rectangular; algunos componentes de diseño no rectangulares pueden tener cuadros delimitadores rectangulares si la falta de rectangularidad se debe a elementos flotantes alrededor de los cuales fluye el texto.
< span class = "ocr_line" id = "line_1" title = "bbox 10 20 160 30" > … </ span >El cuadro delimitador bbox de esta línea se muestra en azul y está comprendido entre la esquina superior izquierda (10, 20) y la esquina inferior derecha (160, 30). Todas las coordenadas se miden con respecto a la esquina superior izquierda de la imagen del documento, cuyo borde está dibujado en negro. [ 3 ]
Archivos PDF con capacidad de búsqueda
El formato hOCR se utiliza comúnmente para crear archivos PDF con texto seleccionable o como metadatos extraídos del archivo PDF. Para crear archivos PDF con texto seleccionable, se pueden utilizar las siguientes herramientas de código abierto para crear una imagen del documento escaneado y un archivo .hocr de dicha imagen.
herramientas hocr
Fuente: [ 4 ]
hocr-tools es una biblioteca de código abierto escrita en Python. Incluye una utilidad de línea de comandos llamada hocr-pdf que permite convertir archivos hocr estándar a un archivo PDF con texto editable. Cabe destacar que, para trabajar con archivos hocr escritos con escritura de derecha a izquierda (RTL) o con alfabetos no latinos como el árabe , actualmente es necesario utilizar el repositorio de GitHub .
hocr-pdf
Podemos utilizar la utilidad hocr-pdf utilizando la siguiente sintaxis básica.
hocr-pdf—guardar archivo final.pdf carpeta_imágenes_y_hocr
La carpeta folder_images_and_hocr debe contener los archivos en formato .jpg y .hocr correspondientes, con sus extensiones de archivo modificadas.
Problemas conocidos
Algunos de los problemas conocidos del script hocr-pdf en la instalación de PyPI son los siguientes.
- No está actualizado con el repositorio de GitHub.
- hocr-pdf está roto en la línea 134 debido a que decodebytes() está obsoleto después de Python 3.1 [ 5 ]
Soluciones conocidas
Compila hocr-tools usando el repositorio más reciente de GitHub.
hocr2pdf
hocr2pdf [ 6 ] es otra biblioteca que admite la conversión de archivos hocr. Está escrita en C++ y es compatible con otras bibliotecas. También admite idiomas UTF-8, pero esto puede requerir depuración adicional y la revisión de algunos registros de conversaciones de Google para lograrlo.
Según las páginas de manual de Ubuntu ,
ExactImage es una biblioteca de procesamiento de imágenes en C++ de alta velocidad. A diferencia de muchos otros frameworks, permite operar de forma nativa en varios espacios de color y profundidades de bits, lo que resulta en bajos requisitos de memoria y computación. hocr2pdf crea archivos PDF bien maquetados y con capacidad de búsqueda a partir de datos hOCR ( HTML anotados ) obtenidos de un sistema OCR .
Intentos de hOCR a PDF
Además de las bibliotecas estables que se mencionan a continuación, el formato hOCR ha recibido numerosas contribuciones a lo largo de los años, con el apoyo de muchos de sus primeros usuarios. En 2021, este script, que data de hace 12 años, permite insertar texto en una imagen mediante hOCR y convertirla a un archivo PDF utilizando Python 2. Este script también se puede actualizar y adaptar para que funcione correctamente convirtiendo el código fuente de Python 2 a un entorno compatible con Python 3.
- HOCRConverter de jbrinley (Documentación [ 7 ] )
Convertidor HOCR
HOCRConverter es un script escrito en Python 2.x que permite convertir un archivo hOCR con una imagen específica a un archivo PDF con texto editable. Puedes consultar la documentación en el enlace anterior.
from HocrConverter import HocrConverterhocr = HocrConverter ( "myHocrFile.html" ) # Esto se puede hacer cambiando .hocr a .html y viceversa hocr.to_text ( "output.txt" ) hocr.to_pdf ( " myImageFile.png " , "output.pdf" )Problemas conocidos
- No ha sido probado.
- No admite de forma nativa Python 3.x.
Véase también
- ALTO (XML) : otro formato de representación de datos OCR.
Referencias
- ↑ Breuel, T. (1 de septiembre de 2007). "El microformato hOCR para el flujo de trabajo y los resultados del OCR" (PDF) . Novena Conferencia Internacional sobre Análisis y Reconocimiento de Documentos (ICDAR 2007), vol . 2. págs. 1063–1067 . doi : 10.1109/ICDAR.2007.4377078 . ISBN 978-0-7695-2822-9. S2CID 7565957 .
- ↑ "Documentación de Ghostscript" . ghostscript.com . Consultado el 1 de marzo de 2024 .
- ↑ "hOCR - Flujo de trabajo y salida de OCR integrados en HTML" . kba.cloud . Archivado del original el 17 de diciembre de 2021. Consultado el 18 de diciembre de 2021 .
Este artículo incorpora texto de esta fuente, que es de dominio público . - ↑ ocropus, ocropus (2021-12-12). "hocr-tools" . Github .
- ↑ Ahmad, Muneeb (12/12/2021). "decodebytes() Obsoleto en hocr-pdf use decodestring()" . GitHub . Recuperado el 12/12/2021 .
/home/muneeb/.local/bin/hocr-pdf:134: DeprecationWarning: decodestring() es un alias obsoleto desde Python 3.1, use decodebytes() uncompressed = bytearray(zlib.decompress(base64.decodestring(font)))
- ↑ "Página de manual de Ubuntu: Hocr2pdf - convertidor de hOCR a PDF del kit de herramientas ExactImage" .
- ↑ Brinley, Jonathan (2009-04-02). "Convertir hOCR a PDF" . x+3 . Archivado del original el 6 de febrero de 2021. Recuperado el 12 de diciembre de 2021 .
Enlaces externos
- La especificación hOCR para obtener información detallada sobre hOCR.
- Especificación de la versión actual (1.2 a fecha de febrero de 2021)
- hocr-tools – herramientas para manipular y evaluar el formato hOCR en GitHub
- ocr-fileformat – Software que valida y transforma varios formatos de archivo OCR, incluyendo hOCR, en GitHub.
- Reconocimiento óptico de caracteres
- Microformatos