我需要從上傳的文檔中提取純文本,以使它們可供搜索。文件可以是MS Word或pdf(掃描或包含文本)。有問題的應用程序在LAMP堆棧上運行,但安裝其他軟件可能是一種選擇。有什麼工具,服務,圖書館或者你可以推薦完成這項任務的組合嗎?如何從文檔中提取/識別文本?
回答
可以使用的shell實用程序的組合像pdftotext
爲PDF文件,wvWare
的文檔,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我的罐子和模式讓你開始,模式的相關部分是包含「附件」的行。
然而,Solr Cell不會做OCR。您必須首先使用OCR引擎才能使其可搜索。
對於OCR,您可以使用Google開發的OpenSource Engine Tesseract,或者您可能想看看商用引擎Abbyy。兩者都是作爲命令行使用的,你可以從你的php腳本運行。要從Tesseract獲得Abbyy的可比結果,您需要執行一些預處理和後處理1。還有云服務,這可能是一個更容易的選擇。例如,Wisetrend和Abbyy Cloud。後者目前處於測試階段,所以它是免費的,它已準備好去PHP code samples。
我不知道任何將PDF轉換爲文本的軟件,但對於MS Word部分,您可以使用Apache POI:http://poi.apache.org/,它是使用JAVA構建的,因此您必須從PHP文件執行二進制文件使其工作。
另一個選擇是使用JODConverter(我目前正在使用該目的)http://code.google.com/p/jodconverter/ 所以如果Apache POI不起作用,我知道jodconverter會。我正在使用3.0測試版。
在我的PHP代碼中,我保存上傳文件並在tmp目錄中的文件上執行轉換器二進制文件,該文件將在tmp目錄中創建一個新文件,並從新文件中提取純文本。
注意:通過stdin輸入文件可能更高效,因此您不必先將其保存到磁盤。如果有問題的uitility沒有爲此提供cli開關,則可以在Linux下使用/ dev/stdin。 – Maarten 2012-01-09 18:56:57
就我而言,在PHP上使用OCR可以做的事情並不多。最好的解決方案是使用雲服務 - 一種web api,可讓您上傳圖像並將您的數據發送回OCR。試試www.ocrsdk.com,它是ABBYY最近推出的基於雲的OCR SDK。它現在處於測試階段,所以它可以完全免費使用,並且已準備好去PHP code samples。Disclamer:我的工作@ ABBYY
有趣!由於這只是解決方案的一部分,不過,我編輯了另一個答案(編輯仍處於未決狀態)。我希望你原諒我。 – Maarten 2012-01-09 18:59:02
- 1. 從文本文檔中提取句子
- 2. 從PDF文檔中提取文本 - C#
- 3. 從XPS文檔中提取文本
- 4. 識別並從文本文件中提取數字
- 5. 如何在文本,文檔,PDF文件中識別文本是英文的?
- 6. 從文檔中識別文本中的顏色
- 7. 如何僅從HTML文檔中提取粗體文本?
- 8. 如何從LaTeX文檔中提取重要的文本內容
- 9. 如何從Word文檔中提取RTF/HTML文本?
- 10. 如何從PDF文檔中提取文本?
- 11. 如何從PDF文檔中提取文本
- 12. 如何識別SharePoint中的文檔
- 13. 從OCR識別的文本中提取信息
- 14. 識別SVG文檔
- 15. 從pdf獲取機械化數據提取和文本識別
- 16. 如何在XML文檔中提取HTML的文本版本?
- 17. 如何識別文字中的提及?
- 18. W3C CSS Validator如何識別css3文檔?
- 19. 如何在OpenNLP中讀取命名實體識別的文檔
- 20. 從Word文檔中提取宏到c#文本文件#
- 21. 識別文本
- 22. 使用docsplit從內存中的文檔中提取文本
- 23. 從HTML文檔中提取文本到單詞列表中
- 24. 如何在兩個文檔中提取不匹配的文本
- 25. 如何確定從文檔中提取文檔時的文件類型
- 26. 如何從文本中提取列
- 27. 如何從文本中提取URL
- 28. 如何從標籤中提取文本?
- 29. 如何從文本中提取關係
- 30. 如何從文本中提取數字?
對於掃描文檔,我認爲您需要一點[OCR](http://en.wikipedia.org/wiki/Optical_character_recognition) – BoltClock 2011-12-22 19:56:30
從舊式.doc文件中提取文本是嚴重的痛苦。它們並不意味着很容易被解析。 .docx更容易一些,因爲它們大部分都是壓縮的.xml文件。 – 2011-12-22 19:57:52
@BlotClock我知道。我沒有明確提到它,因爲我認爲這很明顯。 – Maarten 2011-12-22 20:15:51