我需要从上传的文档中提取纯文本,以便对其进行搜索。文档可以是MS Word或pdf(扫描或包含文本)。有问题的应用程序在LAMP堆栈上运行,但安装其他软件可能是一种选择。是否有任何工具,服务,库或您可以推荐的组合来完成此任务?
答案 0 :(得分:4)
您可以将pdftotext
等shell实用程序用于PDF,wvWare
用于DOC,docx2txt.pl
用于DOCX,就像textractor rubygem一样。
# on Ubuntu
apt-get install wv xpdf-utils links
另一个rubygem,即使是Tesseract,它甚至为你做OCR,也是docsplit。
考虑Solr进行索引和搜索可能是个好主意。您可以使用Solr Cell插件来索引和搜索Word文档,PDF等。我在其中一个项目中成功使用它。 Solr Cell基于Apache POI,Tika和PDFBox等多个项目。
棘手的部分是设置所有依赖于细胞的jar和solr模式,并找出索引请求参数,但所有这些都可以从wiki文档中找到。 Here's我的jar和架构让你开始,架构的相关部分是包含“附件”的行。
但是,Solr Cell不会进行OCR。您必须首先使用OCR引擎才能使它们可搜索。
对于OCR,您可以使用由Google开发的OpenSource Engine Tesseract,或者您可能希望查看商业引擎Abbyy。两者都是命令行工具,您可以从您的PHP脚本运行。要从Tesbyract获得与Abbyy相当的结果,您必须进行一些预处理和后处理1。还有云服务,这可能是一个更容易的选择。例如,Wisetrend和Abbyy Cloud。后者目前处于测试阶段,因此它是免费的,并且已经准备就绪PHP code samples。
答案 1 :(得分:3)
就我而言,你在PHP上用OCR做的事情并不多。最好的解决方案是使用云服务 - 一种web api,可让您上传图像并向您发回OCR数据。试试www.ocrsdk.com,它是ABBYY最近推出的基于云的OCR SDK。它现在处于测试阶段,所以它完全免费使用,并且已经准备就绪PHP code samples。免责声明:我工作@ ABBYY
答案 2 :(得分:0)
我不知道任何将PDF转换为文本的软件,但对于MS Word部分,您可以使用JAVA中构建的Apache POI:http://poi.apache.org/,因此您必须执行二进制文件你的PHP文件使它工作。
另一种选择是使用JODConverter(我目前正在使用它)http://code.google.com/p/jodconverter/ 因此,如果Apache POI不起作用,我知道jodconverter会这样做。我正在使用3.0测试版。
在我的PHP代码中,我正在保存上传文件并在tmp目录中的文件上执行转换器二进制文件,这将在tmp目录中创建一个新文件,并从新文件中提取纯文本。 / p>