Python有沒有什麼好的pdf2txt方法?

最近想用Python做一個從大量pdf中讀信息存入資料庫的工作,一上來就遇到了問題:如何轉化pdf為文本。嘗試了PDFMiner和pyPdf。

在一陣艱苦卓絕的尋覓後終於找到一個新API的示例:Programming with PDFMiner,

然而interpreter.process_page(page)一句,我去看內部代碼,應該是直接列印了獲取的txt的,but並沒有任何顯示。

轉而嘗試pyPdf,代碼如下:

from pyPdf import PdfFileReader
path = rD:Userswin10Desktop3204229.pdf
input = PdfFileReader(file(path, "rb"))
for page in input.pages:
pageText = page.extractText()
print(pageText)

用extractText()解析出了結果,Unicode編碼。輸出如下:

英文和數字顯示出來了,但是漢字全是亂碼。再print(repr(pageText)):

這樣感覺倒不僅是亂碼問題了,PDF文檔中漢字數目在100以上,而顯示只有這麼多,看起來很多信息都丟失了。

那麼問題來了,我該怎麼做到用Python來讀取PDF中的中文內容呢?有以上類庫正確的使用姿勢也好,有什麼更好的類庫也好,有什麼機靈的方法也好。


pypdf2不支持中文轉化的,你可以使用pdfminer, 我試過可以轉中文, python3 安裝使用pip install pdfminer3k

from pdfminer.pdfinterp import PDFResourceManager, process_pdf

from pdfminer.converter import TextConverter

from pdfminer.layout import LAParams

from io import StringIO

def convert_pdf(path, page=1):

rsrcmgr = PDFResourceManager()

retstr = StringIO()

laparams = LAParams()

device = TextConverter(rsrcmgr, retstr, pageno=page, laparams=laparams)

fp = open(path, rb)

process_pdf(rsrcmgr, device, fp)

fp.close()

device.close()

str = retstr.getvalue()

retstr.close()

return str

file = rM:700 SPECGAD423_20150924-1550.pdf

print(convert_pdf(file))

你好,我還有另外一種方式,調用xpdf中的pdftotext.exe, 經測試解析速度是pdfminer的差不多快1倍。因為在我解析的pdf中文使用了日文字體,導致用pdfminer解析時部分字無法解析,但使用xpdf的pdftotext完全可以解析。代碼如下:

import os
import subprocess
from os.path import isfile,join

ef = D:/xpdf/pdftotext.exe
cfg = D:/xpdf/xpdfrc
file = D:/xpdf/1.pdf

def convert(file):
bo = subprocess.check_output([ef,-f,1,-l,1,-cfg,cfg,-raw,file,-]) #這個命令中的所有調用文件參數必須使用full path.否則調用出錯。
return bo.decode(utf-8)

dr = rM:700 SPECGAD
files = [f for f in os.listdir(dr) if isfile(join(dr,f)) and f.endswith(.pdf)]

for file in files:
bo = convert(join(dr,file))
if len(bo)!=0:
print(bo.split(
))

另外xpdf中pdftotext的下載地址:鏈接:http://pan.baidu.com/s/1cy8wto 密碼:oixv


用pdfminer轉過上市公司年報,效果可以。 代碼好像就是幫助文檔裡面的代碼。


這個看你想幹啥了。pdf裡面有圖片,文字等。你所說的獲取txt,是去掉圖片的文本嗎,這樣的話,java的poi庫倒是不錯。


推薦閱讀:

如何把電腦上下載的 PDF 文檔傳到雲空間,然後在 iPad 上打開?
Mac打開PDF中英文混合的文章是亂碼,怎麼解決?
PDF 能轉成 HTML 嗎?如何轉換?
kindle對pdf的支持真的很糟糕嗎?
用 LaTeX 撰寫的學術論文怎麼方便的供老師評註和修改?

TAG:Python | PDF | Python庫 |