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 LAParamsfrom io import StringIOdef 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 strfile = 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 撰寫的學術論文怎麼方便的供老師評註和修改?