从大文件中提取文本

我需要从大文件中提取文本(最大限制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器库从各种文档中检测和提取元数据和结构化文本内容。