2009-08-14 139 views
7

我需要從PDF文件中提取文本。該文本可能會以表格格式顯示,並將用於外部參與者與我們系統之間的數據自動傳輸。從PDF文件中提取文本

任何人都可以提出一個命令行工具(例如pdf到TXT)或一個圖書館,這將是很好的?

語言選項:

  • C#(首選)
  • 的Java(如果我必須)

我發現這裏的一些想法,但我認爲這個傢伙談論更多的一維我說的更像日常進口:

https://stackoverflow.com/questions/488089/extracting-tables-from-pdf-files

+1

你想保留文本的表格格式嗎?如果是這樣,那麼任務將變得相當困難,如果沒有,那麼任何建議的PDF到文本庫都應該這樣做。 – Rowan 2009-08-14 04:48:05

+0

表格格式不重要,它只需要機器可讀,所以我可以解析它並將其推入數據庫。 – Chris 2009-08-14 06:40:05

回答

4

pdftotext似乎這樣的伎倆相當不錯。

pdftotext file.pdf [textfile.txt] 

編輯:我不知道你怎麼想保留有關表的信息。最好看的輸出(至少對我的肉眼來說)是由

pdftotext -layout file.pdf [textfile.txt] 

這會盡可能地保持文檔的原始佈局。特別是,這些表格在文本輸出中仍然很不錯。默認是將表格的列解釋爲文本列(可怕的)。另一種選擇對我來說看起來不太好,但可能仍然有用,它是-raw選項。

+0

您的意思是Xpdf工具嗎? – Chris 2009-08-14 04:41:00

+0

根據維基百科,'xpdf'確實有'pdftotext'的實現。我使用'poppler-utils'軟件包。我似乎無法找到一張帶有表格的pdf來測試輸出的樣子。你喜歡什麼樣的輸出? – 2009-08-14 04:54:27

+0

看起來poppler是xpdf的一個分支,所以它可能是同一個工具。 – Chris 2009-08-14 06:39:34

1

我不能提供一個解決方案,但只提供一般建議。我對你的建議是在記事本或其他純文本編輯器中打開PDF文檔並研究格式代碼。他們很容易理解。例如,// par是一個段落,//標籤是一個Tab。一旦知道了表格佈局的格式化代碼,您將很容易找到自己的解決方案從PDF文檔中提取任何內容。

+1

這並不容易。從文檔中以可讀格式提取文本涉及很多工作。如果您每次只需要從同一文檔中提取文本,但任務變得更加容易,但是如果您需要從隨機文檔中提取文本以及來自不同來源的文本,則根本不容易。所以我不會推薦這個選項,除非你想花費相當多的時間來完善它,並且真的不能使用任何第三方庫。 – Rowan 2009-08-14 23:56:57

1

Java上也有PdfBox和JPedal。表格不存在於PDF文件格式中,所以任何軟件都會「猜測」它們。

1

Apache Tika是開源的Java工具包,專門從事您正在尋找的內容:從各種文檔(包括pdf)中提取結構化上下文。

它確實使用PDFBox作爲pdf文件格式,但提供了抽象級別,非常適合提取結構化上下文。

它包含命令行實用程序 - 請參閱here

1

PDF中的表格數據通常很難正確提取,因爲大多數PDF文件不包含結構化內容元數據。沒有這個元數據PDF文件,只需要一堆文本和其他操作。大多數情況下,只有人類可以說文檔中是否有表格。

幾乎任何足夠先進的工具和庫都嘗試使用啓發式方法以某種方式構造從PDF中提取的文本。結果當然因工具而異,從庫到庫也不盡相同。

您可以試試Docotic.Pdf library(免責聲明:我爲Bit Miracle工作)從PDF文件中提取文本。我認爲圖書館應該提取質量足以進一步處理的文本。

請看看示例how to extract text from PDF