Las cadenas que obtengo (mediante programación) de archivos de MS Word cuando uso Apache POI no son el mismo texto que puedo ver cuando abro los archivos con MS Word.Java: PDI de Apache: ¿Puedo obtener un texto limpio de los archivos de MS Word (.doc)?
Cuando se utiliza el siguiente código:
File someFile = new File("some\\path\\MSWFile.doc");
InputStream inputStrm = new FileInputStream(someFile);
HWPFDocument wordDoc = new HWPFDocument(inputStrm);
System.out.println(wordDoc.getText());
la salida es una sola línea con muchos personajes no válidos '(sí, las 'cajas'), y muchas cadenas no deseados, como "FORMTEXT
", "HYPERLINK \l "_Toc##########"
"('#' siendo dígitos numéricos)," PAGEREF _Toc########## \h 4
", etc.
el siguiente código 'fija' el problema de una sola línea, pero mantiene todos los caracteres no válidos y texto no deseado:
File someFile = new File("some\\path\\MSWFile.doc");
InputStream inputStrm = new FileInputStream(someFile);
WordExtractor wordExtractor = new WordExtractor(inputStrm);
for(String paragraph:wordExtractor.getParagraphText()){
System.out.println(paragraph);
}
No sé si estoy utilizando el método incorrecto para extraer el texto, pero eso es lo que he encontrado al mirar POI's quick-guide. Si lo soy, ¿cuál es el enfoque correcto?
Si esa salida es correcta, ¿hay una forma estándar para deshacerse del texto no deseado, o tendré que escribir mi propio filtro?
La segunda solución no funcionaba en mis pruebas TIKA-1.2 devolvió FORMCHECKBOX y otras cosas desde archivos .doc. Sin embargo, los archivos .docx funcionaron bien. – Simon
Sugiero que intentes con la versión más reciente de Tika, 1.3. Si el problema persiste allí, por favor [presente un error] (https://issues.apache.org/jira/browse/TIKA) y cargue un archivo de muestra que lo muestre, para que podamos investigarlo. – Gagravarr
Esto todavía sucede en Tika 1.3 para mí, por lo que vale. – damd