Die Strings, die ich (programmatisch) von MS Word-Dateien bekomme, wenn ich Apache POI verwende, sind nicht der gleiche Text, den ich betrachten kann, wenn ich die Dateien mit MS Word öffne.Java: Apache POI: Kann ich sauberen Text von MS Word (.doc) Dateien bekommen?
Wenn mit dem folgenden Code:
File someFile = new File("some\\path\\MSWFile.doc");
InputStream inputStrm = new FileInputStream(someFile);
HWPFDocument wordDoc = new HWPFDocument(inputStrm);
System.out.println(wordDoc.getText());
der Ausgang ist eine einzige Zeile mit vielen 'ungültig' Zeichen (ja, die 'Boxen') und viele unerwünschte Strings, wie "FORMTEXT
", "HYPERLINK \l "_Toc##########"
"('#' sind Ziffern)," PAGEREF _Toc########## \h 4
“usw.
Der folgende Code "fixes" die einzeilige Problem, aber behält alle ungültigen Zeichen und unerwünschten Text:
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);
}
Ich weiß nicht, ob ich die falsche Methode zum Extrahieren des Textes verwende, aber das ist, was ich bei POI's quick-guide sah. Wenn ich bin, was ist der richtige Ansatz?
Wenn diese Ausgabe korrekt ist, gibt es eine Standardmethode, um den unerwünschten Text loszuwerden, oder muss ich einen eigenen Filter schreiben?
Die zweite Lösung nicht in funktionierten meine Tests. TIKA-1.2 hat FORMCHECKBOX und andere Dinge aus DOC-Dateien zurückgegeben. .docx Dateien funktionierten gut. – Simon
Ich würde vorschlagen, dass Sie versuchen, mit der neuesten Tika-Version, 1.3. Wenn das Problem dort immer noch auftritt, bitte [einen Fehler melden] (https://issues.apache.org/jira/browse/TIKA) und lade eine Beispieldatei hoch, die es zeigt, damit wir es untersuchen können! – Gagravarr
Dies geschieht immer noch in Tika 1.3 für mich, für das, was es wert ist. – damd