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

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

她:“干什么用哒?”

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

她:“怎么用啊?”

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

她:“哇,这么厉害!”

。。。。。。

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

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

她:“好棒啊!”

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

python-translater-pdf.jpg

“自己吹下的牛皮,含泪也要实现。” 不过,这可不是吹牛皮。之前接触过提取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公众号发消息“翻译”获得软件下载地址,发送“翻译源码”获得本软件的源代码。

yrx_banner_pic.jpg

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值