上次用Python写好翻译doc文档小软件后就展示给宝宝,我:“宝宝,过来给你个小软件”

她:“干什么用哒?”

我:“给你翻译Word文档的”

她:“怎么用啊?”

我:“选择一个docx文档,再按翻译按钮就好了”

她:“哇,这么厉害!”

。。。。。。

她:“可以翻译PDF吗?好多文档都是PDF的哦”

我:“这个。。。可以有”

她:“好棒啊!”

然后,又一阵。。。。。。

“自己吹下的牛皮,含泪也要实现。” 不过,这可不是吹牛皮。之前接触过提取PDF内容的事情,所以还是有把握的。

从PDF里面提取文本内容有很多种方法,但是真正适合的还是要研究一番才能做出正确的选择。选择的标准就是:适合Windows,速度要快。

一、对比选取Python抽取pdf文档库

pdfminer是纯Python实现的PDF内容提取的库,很适合Python开发,Linux和Windows上使用都很方便。

去github搜索“pdfminer”,排在第一的是老的版本,只支持Python 2。支持Python 3的版本叫做: pdfminer.six,也支持Python2,它的地址是:

https://github.com/pdfminer/pdfminer.six

然而,它的速度很慢,因为是纯Python写的。有多慢呢?看看下面它与pdftotext的对比测试吧:

测试文件大小: 2.1MB

(1)pdftotext 用时: 1.031s

time ./bin/pdftotext -enc UTF-8 z.pdf z.txt

real 0m1.031s

user 0m1.004s

sys 0m0.008s

(2)pdfminer 用时: 2m29.226s == 149.226s

time pdf2txt.py z.pdf

real 2m29.226s

user 2m29.016s

sys 0m0.064s

两者相差149倍!!我家宝宝是个急脾气,让她等那么长时间,我还能好过吗?果断舍弃pdfminer,选择pdftotext。

二、使用pdftotext来抽取PDF文档

这是一个基于xpdf用C++写的命令行工具,速度杠杠的(见上面的对比)。有人也把它封装成了Python库——pdftotext,但是要编译成动态库才能被Python所用。这个封装基于poppler库(基于xpdf)。

然而,要在Windows上编译这个Python库太不容易了。基本的编译环境有VC和minGW,具体见:

https://wiki.python.org/moin/WindowsCompilers

我选择minGW编译环境,编译Python库时各种依赖太复杂。断断续续整了几天未果,只好放弃使用这个Python封装库。

三、subprocess调用pdftotext.exe

pdftotext命令行工具有Windows版本的可执行文件下载:

https://www.xpdfreader.com/download.html

那我就用subprocess调用即可。这样我开发省事儿,宝宝用着速度也够快,一举两得。

路线定好后,程序写起来就很快了。时间多花在路线定制上,好的路线值得花费时间去制定,往往能得到事半功倍的效果。

四、用pyinstaller发布翻译PDF文档程序

上一个版本用pyinstaller打包程序很容易,因为除了程序文件没有其它附加文件,而这次程序包含了pdftotext.exe等文件,导致打包不是那么顺利。这其中的经验,我将总结为一篇专门讲解pyinstaller的文章,敬请期待。

五、翻译软件:transdocx的运行

(1)从源代码运行:

直接运行transdocx.py即可。当然,相应的Python库要先安装好。

另外,源代码文件夹 bin/ 下面的pdftotext.exe不是翻译软件,而是被翻译软件用来从PDF中提取文本的程序,不要直接运行它。

(2)下载打包好的翻译软件

下载transdocx-*.exe后,直接双击即可运行。

最后,跟上次一样,关注猿人学Python公众号发消息“翻译”获得软件下载地址,发送“翻译源码”获得本软件的源代码。

我的公众号:猿人学 Python 上会分享更多心得体会,敬请关注。

***版权申明:若没有特殊说明,文章皆是猿人学 yuanrenxue.com 原创,没有猿人学授权,请勿以任何形式转载。***

python翻译器怎么用_给宝宝用Python写个支持翻译PDF文档的小软件相关推荐

  1. R pdf大小_免费、开源、多平台支持的PDF文档处理软件 PDFsam Basic

    今天给大家推荐的是一款免费.开源.多平台支持的PDF文档处理软件-- PDFsam Basic PDFsam Basic是为普通用户提供的免费开源解决方案,提供了PDF文档拆分.合并.混合.提取页面和 ...

  2. 陈儒老师的《Python源代码剖析》需要理解的东西(源码解析的pdf文档需要自己网上下载)

    1:python对象的实现机制,如何用C来实现 2:对象的特性是如何实现的,对象是如何管理的,不同对象,如int,str,list,dict等处理. 3:python的作用域和名字空间 4:pytho ...

  3. 福昕pdf虚拟打印机_一学就会的PDF文档压缩小技巧

    PDF文档拥有着兼容性.稳定性和安全性的优点,在文档界拥有这不可撼动的江湖地位,但是对于PDF文档的压缩处理,我们却无从下手.哈哈,不用纠结,现在小编就教你如何压缩PDF文档.如何快速转换PDF文档. ...

  4. 网页导出pdf不完整_快速翻译PDF文档的免费方法

    您还在为翻译PDF文档而烦恼吗? 或者您通过某度搜索出来的文档翻译网站或者使用某些文档软件都需要注册会员或者充钱呢? 而且好多既不安全还不一定靠谱. 本文介绍的这种方法希望能够为您解决烦恼.此方法不涉 ...

  5. 用python和FreePic2Pdf工具手把手教你生成扫描版PDF文档的目录

    从网上下载一本书籍来看,结果却是书籍页数几百页还没有目录,要想找到自己想看的部分还的自己徒手去翻,哇.....这时心态就崩了,你识别是也遇到过这种情况.很多下载下来的pdf文档都是扫描版的,一般都没有 ...

  6. python搜索pdf内容所在页码_利用Python在pdf文档中寻找某些词出现的页码

    要研究pdf文件的页码,首先要考虑这个文件的种类.pdf可能是一本书的电子版,可能是一份简历.可能是由Word.PPT或其他文档导出的--如果不是一本书,通常页面内容里是没有页码的:如果是一本书,虽然 ...

  7. python开发板比较_再不学点Python,咱真老了--Adafruit Metro M0 Express开发板评测

    Mu聪明的地方在于它能将代码保存到开发板映射到PC的磁盘上,将文件命名为sum.py并保存.然后看串口中是否有输出.然而并没有,仍然是main.py程序的输出! 原来,CircuitPython在处理 ...

  8. 树莓派是python的应用领域吗_树莓派为什么采用python语言为主要开发语言?

    回复内容: 他老爸想让更多小孩学会编程,去用电脑实现自己有趣的想法.本来打算只让这个机器跑Python(是只跑Python,像学习机一样的东西.并没有想过在上面弄一个完整的linux).但是后来动真格 ...

  9. python根据模板生成pdf文件_程序生成word与PDF文档的方法(python)

    程序导出word文档的方法 将web/html内容导出为world文档,再java中有很多解决方案,比如使用Jacob.Apache POI.Java2Word.iText等各种方式,以及使用free ...

最新文章

  1. Go 学习笔记(26)— Go 习惯用法(多值赋值,短变量声明和赋值,简写模式、多值返回函数、comma,ok 表达式、传值规则)
  2. vue经验 - 细节小知识点汇总(更新中...)
  3. R树空间索引及其变种
  4. PowerDesigner 建立约束
  5. 操作系统实验--存储管理
  6. 虎牙直播源解析【可选清晰度】
  7. Hyperledger Fabric无排序组织以Raft协议启动多个Orderer服务、TLS组织运行维护Orderer服务
  8. vue3中使用Web Worker多线程
  9. ElasticSearch常用语法大全
  10. 百度地图定位不准的问题
  11. html5 在线 ppt 制作软件,HTML5 幻灯片相册制作工具(HTML5 Slideshow Maker)
  12. 点到线段的最短距离——矢量法
  13. IntelliJ IDEA 2019从入门到癫狂
  14. MySql 数据库 知识点
  15. 企业邮箱注册流程是怎样的?
  16. 黑客会用什么方式攻击你的服务器?
  17. 几道经典递归算法案例
  18. 取得执业药师证后,你可能会遇到的各种问题!
  19. 怎么设置永磁同步电机的电流控制角
  20. 微信小程序通过web-view网页授权获取用户公众号OpenID

热门文章

  1. C语言例题解析 - 基础篇
  2. 小蚁正式发布双目VR全景相机,便宜、高像素只售2499元。
  3. 【每日一个GitHub项目】GitHub中文排行榜
  4. FileIterator
  5. Hibernate 返回类型转Integer
  6. 510758-19-7,5-FAM-Alkyne高选择性和灵敏的荧光生物标记物,可用于标记碱性磷酸酶 (ALP)
  7. 【论文研读】基于BP 神经网络的 Q235 钢力学性能预测模型
  8. HaProxy 1.5 说明文档翻译
  9. c语言本地函数声明非法,C++本地函数定义是非法的
  10. 【鸡头?凤尾?】选择大公司还是小公司是个问题