gbk编码转换器(python 利用PDFMiner包操作PDF)

PDFMiner是一个从PDF文档中提取信息的工具。与其他PDF相关的工具不同,它完全侧重于获取和分析文本数据。PDFMiner允许您获取页面中文本的确切位置,以及其他信息,如字体或线条。它包括一个PDF转换器,可以将PDF文件转换成其他文本格式(如HTML)。它有一个可扩展的PDF解析器,可用于除文本分析以外的其他事情。

特征

  • 完全用python编写。(对于版本2.4或更新版本)

  • 解析,分析和转换PDF文档。

  • PDF-1.7规范支持。(好,差不多)

  • CJK语言和垂直编写脚本支持。

  • 支持各种字体类型(Type1,TrueType,Type3和CID)。

  • 基本加密(RC4)支持。

  • PDF到HTML转换(使用示例转换器Web应用程序)。

  • 大纲(TOC)提取。

  • 标记的内容提取。

  • 通过对文本块进行分组来重建原始布局。

对于CJK语言你还需要安装以下的包:

gbk编码


安装重点:

记住乖乖从网上下载安装包解压安装,千万千万不能 python install pdfminer 安装,这种安装关联不上编码包,直接导致你读取的PDF是乱码。


mac系统执行这个命令

# make cmappython tools/conv_cmap.py pdfminer/cmap Adobe-CNS1 cmaprsrc/cid2code_Adobe_CNS1.txt reading 'cmaprsrc/cid2code_Adobe_CNS1.txt'... writing 'CNS1_H.py'... ...(this may take several minutes)# python setup.py install

windows系统执行这个命令

mkdir pdfminercmap python toolsconv_cmap.py -c B5=cp950 -c UniCNS-UTF8=utf-8 pdfminercmap Adobe-CNS1 cmaprsrccid2code_Adobe_CNS1.txt python toolsconv_cmap.py -c GBK-EUC=cp936 -c UniGB-UTF8=utf-8 pdfminercmap Adobe-GB1 cmaprsrccid2code_Adobe_GB1.txt python toolsconv_cmap.py -c RKSJ=cp932 -c EUC=euc-jp -c UniJIS-UTF8=utf-8 pdfminercmap Adobe-Japan1 cmaprsrccid2code_Adobe_Japan1.txt python toolsconv_cmap.py -c KSC-EUC=euc-kr -c KSC-Johab=johab -c KSCms-UHC=cp949 -c UniKS-UTF8=utf-8 pdfminercmap Adobe-Korea1 cmaprsrccid2code_Adobe_Korea1.txt python setup.py install

命令行工具

PDFMiner提供了两个方便的工具: pdf2txt.pydumppdf.py


pdf2txt.py

从PDF文件中提取文本内容。它提取所有要以编程方式呈现的文本,即以ASCII或Unicode字符串表示的文本。它无法识别绘制为需要光学字符识别的图像的文本。它还为每个文本部分提取相应的位置,字体名称,字体大小,书写方向(水平或垂直)。当访问受到限制时,您需要为受保护的PDF文档提供密码。您不能从没有提取权限的PDF文档中提取任何文本。

注意: 并非PDF中的所有字符都可以安全地转换为Unicode。


dumppdf.py

以伪XML格式转储PDF文件的内部内容。这个程序主要是为了调试目的,但也可以提取一些有意义的内容(如图像)。


上面是利用pdfmier包读取pdf文件的一种方式。

还可以采用布局分析

布局分析返回的PDF文档中的每个页面LTPage对象。这个对象和页内包含的子对象,形成一个树结构

如图所示:

  • LTPage :表示整个页。可能会含有LTTextBox,LTFigure,LTImage,LTRect,LTCurve和LTLine子对象。

  • LTTextBox:表示一组文本块可能包含在一个矩形区域。注意此box是由几何分析中创建,并且不一定

    表示该文本的一个逻辑边界。它包含LTTextLine对象的列表。使用 get_text()方法返回的文本内容。

  • LTTextLine :包含表示单个文本行LTChar对象的列表。字符对齐要么水平或垂直,取决于文本的写入模式。

    get_text()方法返回的文本内容。

  • LTChar

  • LTAnno:在文本中实际的字母表示为Unicode字符串(?)。需要注意的是,虽然一个LTChar对象具有实际边界,

    LTAnno对象没有,因为这些是“虚拟”的字符,根据两个字符间的关系(例如,一个空格)由布局分析后插入。

  • LTImage:表示一个图像对象。嵌入式图像可以是JPEG或其它格式,但是目前PDFMiner没有放置太多精力在图形对象。

  • LTLine:代表一条直线。可用于分离文本或附图。

  • LTRect:表示矩形。可用于框架的另一图片或数字。

  • LTCurve:表示一个通用的Bezier曲线。

您可以还会对下面的文章感兴趣

使用微信扫描二维码后

点击右上角发送给好友