python pdf转word开源软件_python 实用程序 | PDF 转 Word

阅读文本大概需要 6 分钟。

现在网上有很多文档是 pdf 格式,虽然这个格式阅读起来很方便,并且里面的内容不会乱掉,但相应的我们就无法修改里面的内容。虽然现在市面上有很多 pdf 转 word 软件,比如 wps,但大多数的软件是要收费的,并且价格不菲。

前些天就有人叫我帮她把 pdf 文档转成 word 的文档。因为 pdf 文档里面的内容有很多,如果全部打印的话,费用还是挺高的。所以她想把里面的内容格式修改下,比如行间距,字间距等等。通过这样的修改,可以把文档的页数减少很多,这样就省下不少的钱。

于是乎我就想到了利用 python 来写个程序,把 pdf 转成 word 文档。秉承着不要重复造轮子的想法,我首先在网上搜索了下。果然已经有人写好了,我们直接拿来用就行。程序一共只有 60 行代码,使用也非常的简单,

程序源代码

import os

from configparser import ConfigParser

from io import StringIO

from io import open

from concurrent.futures import ProcessPoolExecutor

from pdfminer.pdfinterp import PDFResourceManager

from pdfminer.pdfinterp import process_pdf

from pdfminer.converter import TextConverter

from pdfminer.layout import LAParams

from docx import Document

def read_from_pdf(file_path):

with open(file_path, 'rb') as file:

resource_manager = PDFResourceManager()

return_str = StringIO()

lap_params = LAParams()

device = TextConverter(

resource_manager, return_str, laparams=lap_params)

process_pdf(resource_manager, device, file)

device.close()

content = return_str.getvalue()

return_str.close()

return content

def save_text_to_word(content, file_path):

doc = Document()

for line in content.split('\n'):

paragraph = doc.add_paragraph()

paragraph.add_run(remove_control_characters(line))

doc.save(file_path)

def remove_control_characters(content):

mpa = dict.fromkeys(range(32))

return content.translate(mpa)

def pdf_to_word(pdf_file_path, word_file_path):

content = read_from_pdf(pdf_file_path)

save_text_to_word(content, word_file_path)

def main():

config_parser = ConfigParser()

config_parser.read('config.cfg')

config = config_parser['default']

tasks = []

with ProcessPoolExecutor(max_workers=int(config['max_worker'])) as executor:

for file in os.listdir(config['pdf_folder']):

extension_name = os.path.splitext(file)[1]

if extension_name != '.pdf':

continue

file_name = os.path.splitext(file)[0]

pdf_file = config['pdf_folder'] + '/' + file

word_file = config['word_folder'] + '/' + file_name + '.docx'

print('正在处理: ', file)

result = executor.submit(pdf_to_word, pdf_file, word_file)

tasks.append(result)

while True:

exit_flag = True

for task in tasks:

if not task.done():

exit_flag = False

if exit_flag:

print('完成')

exit(0)

if __name__ == '__main__':

main()

使用方法

首先去 github 上把项目 clone 或下载项目到本地.

github : https://github.com/python-fan/pdf2word

git clone git@github.com:simpleapples/pdf2word.git

然后进入项目目录,建立虚拟环境,并安装依赖。

pip install -r requirements.txt

最后修改 config.cfg 文件,指定存放 pdf 和 word 文件的文件夹,以及同时工作的进程数,就可以执行 python main.py。

具体的程序逻辑,可以去查看原文。作者都分析的很详细。

https://zhuanlan.zhihu.com/p/34109582。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值