从大文件中提取文本
我需要从大文件中提取文本(最大限制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来实现这一点,以及哪些最佳实践可以帮助我提高应用程序的性能?
pptx,docx和xlsl是内部带有XML文件的zip文件(content.xml和sharedStrings.xml左右)。 如果您不需要上下文中的文本(即整个文档的模型),则可以自己处理这些XML,然后依次parsing所有文档。
对于PDF,你可以尝试itext,顺序阅读pdf。 实际上有几个PDF库的示例文本提取器。
从XML中提取文本意味着按顺序读取XML文本,只关注>
和<
之间的文本部分。
困难的部分是xlsx,其中单元格值是共享的:间接引用。 我宁愿使用JDBC查询,但这也需要时间。 有几个选项:ODBC-JDBC桥,并有适当的驱动程序。
编程确实耗费时间,应该在小样本文件上完成。
试试Apache Tika 。 Tika用于使用现有的parsing器库从各种文档中检测和提取元数据和结构化文本内容。