2017-05-25 347 views
0

我在pypdf2的幫助下裁剪了一個pdf文件,但是當我嘗試從裁剪的pdf文件中提取文本時,我正在獲取整個pdf頁面的文本。我該如何解決這個問題?即使PDF文件被裁剪後,整個頁面的內容仍然存在

裁剪PDF文件看起來是enter image description here

但之後當我運行命令pdftotext out8.pdf out.txt

我得到:

內容 介紹 第一部分一國兩制

  1. 的故事中的人物

  2. 關注和努力

  3. 懶惰控制器

  4. 聯想機

  5. 認知易於
  6. 規範,驚喜,原因
  7. 了一臺機器過早下結論
  8. 如何判斷髮生
  9. 回答問題更容易 第二部分。小數字的啓發式和偏見
  10. 法 < 5>
  11. 可用性
  12. 可用性,情感與風險的科學
  13. 湯姆·W公司的專業

產量爲應該只是

  1. 故事

的字符代碼,我跑

from PyPDF2 import PdfFileWriter, PdfFileReader 
input1 = PdfFileReader(open("./data/in2.pdf", "rb")) 
output = PdfFileWriter() 

page = input1.getPage(1) 
x = page.mediaBox.getUpperRight_x() 
y = page.mediaBox.getUpperRight_y() 

page.cropBox.lowerRight = (0,331-150) 
page.cropBox.upperRight = (252,331) 
output.addPage(page) 

outputStream = open("out8.pdf", "wb") 
output.write(outputStream) 
outputStream.close() 
+1

薩諾斯我最喜歡的所有時間Villians之一。我最喜歡的引用是在Thanos Quest Book 2中。「誰會想到成爲上帝會是一場空洞的勝利。」 –

+0

@斯科特波士頓啊你回來了太多了:)我也愛Thanos。我是一個奇蹟的巨大粉絲。等待無限的戰爭。 – Dark

回答

0

聽起來像在提取文字層的文本。 PDF可以有多個圖層 - 如果它純粹是一個圖像PDF,那麼它將只有圖像圖層,但很多圖層具有文本圖層。文字圖層可位於圖像的前面,位於圖像的後面或不可見。

除非以特殊方式準備PDF,否則文本圖層不會與圖像中顯示的文本對齊。如果您有多頁PDF,則可能會將文本拆分爲相關頁面,但不能在頁面上進行排列。

裁剪圖像時,這不會影響文本圖層。當你提取文本時,這從文本圖層抓取它是完好無損的。

爲了得到裁剪區域的文本,您需要通過OCR引擎(例如Tesseract)處理它。與Tesseract交互的python軟件包示例:pytesseracttesserocr

關於如何設置和運行處理一些導遊:

ocr-on-pdf-files-using-python
ocr-python-easy

+0

Ocr需要大量時間進行處理。有什麼辦法可以快速處理? – Dark

+1

編號PDF設計爲頁面級查看文檔,而不是用於處理。 Tesseract對於ocr引擎來說很快,但是如果你要做幾百頁,那麼就像你說的那樣,這需要一些時間。示例時間:1頁固體文本= 2.5秒,全書305頁大部分固體文本= 13分鐘。爲了加快速度,你可能想改變你的方法;有什麼方法可以使用不同的來源?例如。正則表達式的文本,或者如果它是一個網頁,使用美麗的湯來刮你想要的頁面的部分。否則,你堅持使用ocr。 – Alan