zoukankan      html  css  js  c++  java
  • 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的文档看不懂,不知道是否能有人写一篇详细的用法。

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

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

  • 相关阅读:
    log4cpp
    互斥锁封装
    Educational Codeforces Round 37-F.SUM and REPLACE (线段树,线性筛,收敛函数)
    Codeforces 920E-Connected Components? (set,补图,连通块)
    Persistent Bookcase CodeForces
    P4390 [BOI2007]Mokia 摩基亚 (CDQ解决三维偏序问题)
    P3157 [CQOI2011]动态逆序对 (CDQ解决三维偏序问题)
    CDQ 分治解决和点对有关的问题
    洛谷 P2163 [SHOI2007]园丁的烦恼 (离线sort,树状数组,解决三维偏序问题)
    洛谷 P3469 [POI2008]BLO-Blockade (Tarjan,割点)
  • 原文地址:https://www.cnblogs.com/SSSR/p/5477297.html
Copyright © 2011-2022 走看看