Un problema que suele ser un ‘cruce de caminos’ en la mayoría de los problemas de recuperación de información y minería de textos es el tratamiento de colecciones heterogeneas de documentos.
Habitualmente se ha tratado el problema con una fase de preprocesamiento que convierte cada documento, originalmente en formatos como .doc, .pdf, .rtf, etc. a un formato en texto plano, para ser tratado a continuación por Lucene o herramientas PLN. Para ello se usaban herramientas como pdfbox…
Al ser un problema común, la propia comunidad Apache ha lanzado un proyecto, Apache TIKA, con el objetivo de elaborar un conjunto de herramientas que permitan detectar y extraer metadatos y texto extructurado desde varios documentos, usando librerias de parsing existentes.
Entre los tipos soportados se encuentran:
- HTML
- XML y derivados
- .doc, .xls, .ppt (formatos de documentos de Microsoft Office)
- .odt (Formato OpenDocument de OpenOffice)
- .pdf (Portable Document Format)
- .epub (formato para libros electrónicos)
- .rtf (Rich Text Format)
- formatos comprimidos (ar, cpio, tar, zip, gzip, bzip2 y zip)
- .txt (detectando el juego de caracteres)
- Audio (.mp3, .mid, .wav, …)
- Imagen (.jpeg, …)
- Video (.flv)
- ficheros Java
- correos en formato mbox
El interface org.apache.tika.parser.Parser es el concepto clave de Apache Tika. Oculta la complejidad de los diferentes formatos de fichero y de librerías de parsing a la vez que proporciona un mecanismo simple y potente a las aplicaciones cliente para extraer metadatos y texto estructurado de todo tipo de documentos. Todo ésto con un simple método:
void parse( InputStream stream, ContentHandler handler, Metadata metadata, ParseContext context) throws IOException, SAXException, TikaException;
Tambíen destacaremos el interface org.apache.tika.detect.Detector que permite la detección del tipo de contenido (el formato de entrada) y permite incluso la detección del lenguaje del documento.
Ni que decir tiene que se encuentra aún en la versión 0.7, pero ya puede ser muy útil integrado en Apache Lucene, Apache Nutch o cualquier otra herramienta que trate con corpus de documentos.







