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的文档看不懂,不知道是否能有人写一篇详细的用法。

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

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

  • 相关阅读:
    中国历史朝代公元对照简表
    [Solved] DashBoard – Excel Service: The data sources may be unreachable, may not be responding, or may have denied you access.
    Delete/Remove Project from TFS 2010
    Sharepoint site showing system account instead of my username on the top right corner.
    你的成功在于你每天养成的习惯
    Internet Information Services is running in 32bit emulation mode. Correct the issue listed above and rerun setup.
    Prepare to back up and restore a farm (Office SharePoint Server 2007)
    Word中字号与磅值的对应关系
    How to: Change the Frequency for Refreshing the Data Warehouse for Team System
    UI Automation in WPF/Silverlight
  • 原文地址:https://www.cnblogs.com/SSSR/p/5477297.html
Copyright © 2011-2022 走看看