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
¿Qué es?

Análisis de Documentos y
Reconocimiento Óptico de
Caracteres para GNOME


                Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
¿Porqué?

El papel tiene varios problemas

Sin aplicaciones para GNU/Linux
   que hagan un buen trabajo

                    Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
Problemas del papel:
     Seguridad




                         Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
           CC Photo by: http://www.flickr.com/photos/badwsky/
Problemas del papel:
   Preservación




                        Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
   CC Photo by: http://www.flickr.com/photos/98469445@N00/
Problemas del papel:
Procesamiento de datos




                     Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
     CC Photo by: http://www.flickr.com/photos/hugovk/
Problemas del papel:
      Ecología




                            Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
          CC Photo by: http://www.flickr.com/photos/pranavsingh/
Hay motores de OCR para
    GNU/Linux pero...




               Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
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
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
¿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
¿Cómo?




         Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
Cómo




       Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
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
Tantas estructuras...




                                Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
            CC Photo by: http://www.flickr.com/photos/uber-tuber/
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
OCRFeeder se enfoca en
contenidos, no en estructuras!




                   Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
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
Hay contenido = Hay puntos cuyo
  color es diferente del fondo




                   Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
Bloques:
Se llama bloques a los grupos de 1s




                     Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
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
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
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
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
Exportación a ODT:

        Usa ODFPy

(abstrae la creación de ODF)
 (justo por encima de XML)

                  Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
Ú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
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
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
ABBY Finereader test




Nuance Omnipage test




                       Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
Finereader's
                                              results


Omnipage's
results




             Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
¡Demo!




         Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
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
GNOME:

Usa la infrastructura de GNOME
           desde Enero




                   Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
Página web:
http://live.gnome.org/OCRFeeder

               git:
 http://git.gnome.org/ocrfeeder

            Bugzilla:
   http://bugzilla.gnome.org
    product: OCRFeeder
                    Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
¡Gracias!

            Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7

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 deDocumentos y Reconocimiento Óptico de Caracteres para GNOME Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
  • 3.
    ¿Porqué? El papel tienevarios 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: Procesamientode 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 deOCR para GNU/Linux pero... Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
  • 9.
    OCR != Conversiónde 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 sequiere 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
  • 12.
    ¿Cómo? Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
  • 13.
    Cómo 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íancon 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 enfocaen contenidos, no en estructuras! Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
  • 18.
    Concepto clave: Siuna 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
  • 20.
    Joaquim Rocha (Igalia)· OCRFeeder · GUADEC ES 7
  • 21.
    Bloques: Se llama bloquesa los grupos de 1s Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
  • 22.
    Juntando bloques: Losbloques 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 motoresOCR del sistema Los motores se configuran desde la GUI o mediante ficheros XML Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
  • 24.
    Configuración de unmotor 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 elusuario: 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
  • 30.
    ABBY Finereader test NuanceOmnipage test Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
  • 31.
    Finereader's results Omnipage's results Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
  • 32.
    ¡Demo! 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
  • 34.
    GNOME: Usa la infrastructurade GNOME desde Enero Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
  • 35.
    Página web: http://live.gnome.org/OCRFeeder git: http://git.gnome.org/ocrfeeder Bugzilla: http://bugzilla.gnome.org product: OCRFeeder Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7
  • 36.
    ¡Gracias! Joaquim Rocha (Igalia) · OCRFeeder · GUADEC ES 7