前言
pdf转word一直是个问题,尝试了很多方法,解析图片识别图片之类的,最后发现office的pdf转word功能是最好的,微软不愧是微软呀。
需求
需要windows系统并安装office
代码原理
office的word是可以直接打开并转换pdf的。并且效果很不错。
手动测试一下:
随便找到一个pdf,右键-》打开方式-》选择其他应用-》找到word
打开之后会出现一个弹窗,选上不再显示,点确定(我不知道这个弹窗会不会影响代码,如果代码失败,那就手动先点一下这个弹窗再运行代码)
然后word会自动帮你把pdf转成word,图片类型的会自动识别成文本,放到合适的位置上去。整体效果还是很不错的。带章的图片文件甚至会把章抠出来做为图片,剩下的文字形成文本存成word,超智能。
代码
import win32com.client as win32
import os
word = win32.gencache.EnsureDispatch('Word.Application')
# 是否显示。如果这里是True,桌面上会展示打开word再关掉的过程。
# 是False的话这个过程不会显示出来
word.Visible =False
output = word.Documents.Add()
output.Application.Selection.InsertFile('111.pdf')
output.SaveAs('111.docx')
output.Close()
基础代码是这样,如果需要批量的话自己改一下脚本。
如果首次安装word后代码不成功,重启下电脑试试。
缺陷
还是有一些问题的:
1、慢。这个东西占cpu和内存,尝试转了一个120M的pdf,笔记本电脑卡了20分钟左右吧。资源占满了的话没法用多线程提速。
2、没法直接在linux服务器上部署。预想解决方案为:在docker里弄一个windows镜像装上office来部署。还没尝试。