我需要从大文件中提取文本(最大限制为50MB)文件可以是doc,ppt,xls,txt或pdf格式。到目前为止,我已经使用了Apache POI'http://poi.apache.org/'
对于Microsoft Office文档和PDFBox,以从PDF中提取文本。但是,随着文件特别大,后续文件变大,提取过程变慢。 结果到目前为止我已经取得了成绩:
1.PPTX - 45MB - 3分钟apx
2.PDF - 62MB - 2分钟apx
3.Docx - 32MB - 15秒apx
4.XLS - 17MB - 10秒apx
5.XLSX - 7MB - 20秒apx
我需要快速的过程。我可以使用哪些API来实现这一点,哪些最佳实践可以帮助我提高应用程序的性能?
答案 0 :(得分:1)
pptx,docx和xlsl是包含XML文件的zip文件(content.xml和sharedStrings.xml等)。如果您不需要上下文中的文本,即DOM(整个文档的模型),您可以自己处理这些XML,并按顺序解析所有XML。
对于PDF,您可以尝试使用itext,依次阅读pdf。事实上,有几个pdf库的示例文本提取器。
从XML中提取文本意味着按顺序读取XML文本,只关注>
和<
之间的文本部分。
困难的部分是xlsx,其中共享单元格值:间接引用。我宁愿使用JDBC查询,但这也需要时间。有几个选项:ODBC-JDBC桥,并且有适当的驱动程序。
编程确实需要时间,应该在小样本文档上完成。
答案 1 :(得分:1)
试试Apache Tika。 Tika用于使用现有的解析器库从各种文档中检测和提取元数据和结构化文本内容。