有一特别的需要从一批pdf文件中获取对应的数据信息,再用R做出可视化的数据报表.
Python 版本2.7,PDFminer是最新版,平台windows
>>> pdfminer.__version__
'20131113'
在windows 上解压pdfminer到python的目录下,为其在pdfminer自己的目录下新建个cmap文件夹
mkdir pdfminer\cmap
执行相应的脚本:
..\python tools\conv_cmap.py -c B5=cp950 -c UniCNS-UTF8=utf-8 pdfminer\cmap Adobe-CNS1 cmaprsrc\cid2code_Adobe_CNS1.txt
..\python tools\conv_cmap.py -c GBK-EUC=cp936 -c UniGB-UTF8=utf-8 pdfminer\cmap Adobe-GB1 cmaprsrc\cid2code_Adobe_GB1.txt
..\python tools\conv_cmap.py -c RKSJ=cp932 -c EUC=euc-jp -c UniJIS-UTF8=utf-8 pdfminer\cmap Adobe-Japan1 cmaprsrc\cid2code_Adobe_Japan1.txt
..\python tools\conv_cmap.py -c KSC-EUC=euc-kr -c KSC-Johab=johab -c KSCms-UHC=cp949 -c UniKS-UTF8=utf-8 pdfminer\cmap Adobe-Korea1 cmaprsrc\cid2code_Adobe_Korea1.txt
..\python setup.py install
linux 下相当简便些,执行package就成了.
新建一.py文件内容如下:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
import codecs
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.pdfpage import PDFPage
from pdfminer.converter import XMLConverter, HTMLConverter, TextConverter
from pdfminer.layout import LAParams
from cStringIO import StringIO
def pdfparser(data):
outfile = data+'.txt'
fp = file(data, 'rb')
outfp = file(outfile,'w')
rsrcmgr = PDFResourceManager()
retstr = StringIO()
codec = "utf-8"
laparams = LAParams()
device = TextConverter(rsrcmgr, outfp, codec=codec, laparams=laparams)
# Create a PDF interpreter object.
interpreter = PDFPageInterpreter(rsrcmgr, device)
# Process each page contained in the document.
for page in PDFPage.get_pages(fp):
interpreter.process_page(page)
data = retstr.getvalue()
print data
device.close()
outfp.close()
if __name__ == '__main__':
pdfparser("c:/r/22.pdf")
检查相应的目录,目标文件以生成,支持中文,再根据需要筛选相应的关键字,获取数据信息.
备注:网上有挺多资料中加载了process_pdf类,在现有的版本资料中会报错,笔者纠结了挺久最后试出了这段代码
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/602532/viewspace-1077990/,如需转载,请注明出处,否则将追究法律责任。