pdf提取文本转html笔记

曾经为了实现pdf的转化测试了太多的文件,导致现在我自己都有点晕了。

再者就是从cnki下载的pdf文件不知道为什么用pdf2htmlEX无法转化。

xpdf

xpdf的使用:参考链接 http://blog.csdn.net/jiang1984j/article/details/5757427 和 http://my.oschina.net/zbrxtpgyaps/blog/28171?fromerr=zd6Ms31I

我再使用的过程中将http://blog.csdn.net/jiang1984j/article/details/5757427此连接下的displayCIDFontTT   注释掉。

这个链接http://www.jb51.net/softjc/20047.html也是参考之一,注意里面的文件夹关系

以上都是解决了中文的问题。xpdf的转化效果有点差 ,尤其是多列的数据,基本就是混乱的。

pdf2htmlex

然后是pdf2htmlex这个工具,真心非常强大转换出来的html样式也特别好看,但是从cnki下载的pdf文件无法转换(报错:ToUnicode CMap is not valid and got dropped,然后一部分中文就无法显示,如果有人知道怎么解决请教教我),

进行测试发现与电脑是否安装字体无关,怀疑是pdf文件本身的问题。

此文件只需要data文件夹和pdf2htmlEX.exe这两个即可以运行:cmd命令  pdf2htmlEX file.pdf outfile.pdf

下载地址:http://soft.rubypdf.com/software/pdf2htmlex-windows-version

选项翻译:http://m.oschina.net/blog/206900

还有人自己用cmake进行编译的,可惜不会。

 

下面是使用pdfminer

pdfminer的安装比较麻烦,安装了好几次,已经忘记怎么安装的了,如果在运行代码过程中出现import错误,那可能是安装包的版本问题,我再使用过程中遇到过说是作者在后续的版本中更改了函数。

 1 import os
 2 parent = "G:/Python/Pythonproject/pdf"
 3 os.chdir(parent)
 4 
 5 from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
 6 from pdfminer.pdfpage import PDFPage
 7 from pdfminer.converter import XMLConverter, HTMLConverter, TextConverter
 8 from pdfminer.layout import LAParams
 9 from cStringIO import StringIO
10 
11 
12 def pdfparser(data):
13 
14 
15     outfile = data+'.txt'
16     fp = file(data, 'rb')
17     outfp = file(outfile,'w')
18     rsrcmgr = PDFResourceManager()
19     retstr = StringIO()
20     codec = "utf-8"
21     laparams = LAParams()
22     device = TextConverter(rsrcmgr, outfp, codec=codec, laparams=laparams)
23     # Create a PDF interpreter object.
24     interpreter = PDFPageInterpreter(rsrcmgr, device)
25     # Process each page contained in the document.
26     
27     
28 
29     for page in PDFPage.get_pages(fp):
30         #print page
31         interpreter.process_page(page)
32         data =  retstr.getvalue()
33         #layout = device.get_result()
34         
35 
36     print data
37 
38 
39     device.close()
40     outfp.close()
41 
42 
43 if __name__ == '__main__':
44     pdfparser(u'基于PIL的验证码快速识别框架的研究_胡光中.pdf')

总体来说pdfminer的结果可以阅读,但是格式特别混乱,不过要比xpdf的好一点,而且依然有错误。速度超级慢。pdfminer的文档看不懂,不知道是否能有人写一篇详细的用法。

 

中文是实现的难点,很多对英文支持特别好,但是到了中文这儿就不行了。

就写到这儿吧,以后再想起来了,在进行更新!

 

posted on 2016-05-10 11:54  徐长卿学数据分析  阅读(1577)  评论(0编辑  收藏  举报