La función _f_do_barnacle_install_properties instala propiedades para una clase GObject. Establece una propiedad llamada "Barnacle code" de tipo uint64 que puede leerse y escribirse de forma privada. Esta propiedad almacena un código de barnacle y su valor predeterminado es el máximo valor uint64.
Quita, que tú no sabes; ya lo hago yo. Generación e inyección de código en ti...
Ocrfeeder
1. static void
_f_do_barnacle_install_properties(GObjectClass
*gobject_class)
{
OCRFeeder
GParamSpec *pspec;
/* Party code attribute */
pspec = g_param_spec_uint64
(F_DO_BARNACLE_CODE,
"Barnacle code.",
"Barnacle code",
0,
G_MAXUINT64,
G_MAXUINT64 /*
default value */,
Conversión de documentos en GNOME
G_PARAM_READABLE
| G_PARAM_WRITABLE |
G_PARAM_PRIVATE);
g_object_class_install_property (gobject_class,
F_DO_BARNACLE_PROP_CODE,
Joaquim Rocha
jrocha@igalia.com
GUADEC ES 7
2. ¿Qué es?
Análisis de Documentos y
Reconocimiento Óptico de
Caracteres para GNOME
Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
3. ¿Porqué?
El papel tiene varios problemas
Sin aplicaciones para GNU/Linux
que hagan un buen trabajo
Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
4. Problemas del papel:
Seguridad
Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
CC Photo by: http://www.flickr.com/photos/badwsky/
5. Problemas del papel:
Preservación
Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
CC Photo by: http://www.flickr.com/photos/98469445@N00/
6. Problemas del papel:
Procesamiento de datos
Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
CC Photo by: http://www.flickr.com/photos/hugovk/
7. Problemas del papel:
Ecología
Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
CC Photo by: http://www.flickr.com/photos/pranavsingh/
8. Hay motores de OCR para
GNU/Linux pero...
Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
9. OCR != Conversión de Documentos
(sólo tiene en cuenta los caracteres)
(no considera la estructura)
(no distingue contenidos)
Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
10. Lo que se quiere es
Análisis y Reconocimiento
de Documentos
(conversión de documentos para
formato electrónico)
(primeros proyectos en los 80s)
Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
11. ¿Done estamos estábamos?
* Algunas soluciones cerradas
* Sólo para sistemas proprietarios
* Precios variados
* y todavía... resultados discutibles
Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
14. Concepto base:
1. Recortar los contenidos
2. Clasificarlos
2.1. Son gráficos → se pegan en el
documento
2.2. Son texto → Se calcula el
tamaño de letra; se pegan en el
documento
Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
15. Tantas estructuras...
Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
CC Photo by: http://www.flickr.com/photos/uber-tuber/
16. Las estructuras varían con el tipo de
documento
Lo que funciona para detectar un
documento, no funcionará para otros
Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
17. OCRFeeder se enfoca en
contenidos, no en estructuras!
Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
18. Concepto clave:
Si una imagen de un documento
puede ser dividida en ventanas de
1 (contenido) o 0 (sin contenido),
entonces es posible agrupar todos
los 1s y delinear los contenidos
Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
19. Hay contenido = Hay puntos cuyo
color es diferente del fondo
Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
22. Juntando bloques:
Los bloques se comparan con los
demás y se juntan cuando sea
adecuado
Cuando ya no se pueden juntar más
bloques, la parte del análisis está
acabada
Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
23. Reconocimiento:
Se usan motores OCR del sistema
Los motores se configuran desde la
GUI o mediante ficheros XML
Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
24. Configuración de un motor OCR:
<?xml version="1.0" encoding="UTF-8"?>
<engine>
<name>Tesseract</name>
<image_format>TIFF</image_format>
<engine_path>/usr/bin/tesseract</engine_path>
<arguments>$IMAGE $FILE; cat $FILE.txt;
rm $FILE.txt</arguments>
</engine>
Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
25. Clasificación:
Después de obtener el texto se
utilizan heurísticas para determinar
si el contenido representa gráficos o
texto
Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
26. Exportación a ODT:
Usa ODFPy
(abstrae la creación de ODF)
(justo por encima de XML)
Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
27. Últimas funcionalidades
* Mejorar la a11y
* Mejorar la detección de columnas
* Enderezar las imágenes
* Mejorar el reconocimiento de texto
Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
28. Otras funcionalidades:
* Importación de PDF
* Uso del pre-procesador Unpaper
* Selección de fuente
* Exportación a HTML
* Grabar/cargar proyectos
Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
29. Interacción con el usuario:
Los usuarios pueden editar y revisar los
resultados de los algoritmos
Entonces, la UI puede funcionar en
modo automático o “manual”
El ILC sólo funciona en el modo
automático
Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
33. Futuro:
* Integración de Ocropus como
método de análisis alternativo
* Más formatos de exportación:
HOCR, txt, PDF
* Mejor integración con GNOME y
sus aplicaciones
Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7