2009-11-04 15 views
5

之間的空間目前,如果我有pyPdf PDF頁面的頁面對象,extractText(),什麼情況是,線路連接在一起。例如,如果頁面的第一行說「你好」和第2行說:「世界」所產生的文本從extractText()返回的是的「HelloWorld」,而不是「世界你好」。有誰知道如何解決這個問題,或者有解決方法的建議?我真正需要的文字有空格在字裏行間,因爲我對這個PDF文本做文本挖掘,而不是具有殺死它線之間的空間....Python和pyPdf - 如何從網頁中提取文本,以便有行

+1

你可能想看看這個SO頁面:http://stackoverflow.com/questions/25665/python-module-for-converting-pdf-to-text有幾個很好的建議! – avelldiroll 2009-11-04 11:24:36

回答

2

這是PDF解析常見的問題。您還可以預計在某些情況下您必須修復的尾部破折號。我想出了一個解決方案,我將在這裏簡要介紹一個項目:

我使用pdfminer從PDF中提取XML,並在XML中找到連接的單詞。我提取相同的PDF爲HTML和HTML可以通過下面的正則表達式的行來描述:

<span style="position:absolute; writing-mode:lr-tb; left:[0-9]+px; top:([0-9]+)px; font-size:[0-9]+px;">([^<]*)</span> 

的跨徑是絕對定位,有一個頂級的風格,你可以用它來確定是否斷線發生。如果換行發生了,在最後一行的最後一個字沒有尾隨破折號,你可以在最後一行和當前行的第一個單詞的最後一個字分開。細節可能會非常棘手,但您可能可以修復幾乎所有的文本解析錯誤。

此外,您可能希望在您的文本上運行像enchant這樣的字典庫,查找錯誤,並且如果字典建議的修正類似錯誤字,但在某處存在空格,則錯誤字可能是解析錯誤並可以用字典建議來修復。

解析PDF糟透了,如果你找到更好的源代碼,請使用它。