Các chuỗi tôi (lập trình) nhận được từ các tệp MS Word khi sử dụng Apache POI không phải là cùng một văn bản mà tôi có thể xem khi mở tệp bằng MS Word.Java: Apache POI: Tôi có thể nhận được văn bản sạch từ các tệp MS Word (.doc) không?
Khi sử dụng đoạn mã sau:
File someFile = new File("some\\path\\MSWFile.doc");
InputStream inputStrm = new FileInputStream(someFile);
HWPFDocument wordDoc = new HWPFDocument(inputStrm);
System.out.println(wordDoc.getText());
đầu ra là một dòng duy nhất với nhiều nhân vật 'không hợp lệ' (vâng, 'chiếc hộp'), và nhiều chuỗi không mong muốn, như "FORMTEXT
", "HYPERLINK \l "_Toc##########"
"('#' là ký tự số)," PAGEREF _Toc########## \h 4
", vv
các mã sau 'sửa chữa' các vấn đề đơn dòng, nhưng vẫn duy trì tất cả các ký tự không hợp lệ và văn bản không mong muốn:
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);
}
Tôi không biết mình có sử dụng phương pháp sai để trích xuất văn bản hay không, nhưng đó là những gì tôi đã nghĩ ra khi xem POI's quick-guide. Nếu tôi là, cách tiếp cận chính xác là gì?
Nếu đầu ra đó là chính xác, có cách nào tiêu chuẩn để loại bỏ văn bản không mong muốn hoặc tôi có phải tự viết bộ lọc không?
Giải pháp thứ hai đã không làm việc trong các bài kiểm tra của tôi. TIKA-1.2 trả lại FORMCHECKBOX và các thứ khác từ các tệp .doc. Các tệp .docx hoạt động tốt. – Simon
Tôi khuyên bạn nên dùng thử phiên bản Tika mới nhất, 1.3. Nếu vấn đề vẫn còn xảy ra ở đó, xin vui lòng [nâng cao một lỗi] (https://issues.apache.org/jira/browse/TIKA) và tải lên một tệp mẫu hiển thị nó, vì vậy chúng tôi có thể điều tra! – Gagravarr
Điều này vẫn xảy ra với Tika 1.3 đối với tôi, vì nó đáng giá. – damd