精华内容
下载资源
问答
  • 主要为大家详细介绍了python实现pdf转换成word和txt纯文本文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • python实现pdfword

    2018-11-03 10:43:57
    python实现pdfword,支持中英文转换转换精度高,可以达到使用效果。
  • Python读取PDF文件–pdfminer

    1、安装pdfminer

    PDFMiner是从PDF文档中提取信息的工具。pdfminer3k是pdfminer的Python 3端口。

    pip install pdfminer3k
    

    2、读取PDF文件内容

    from pdfminer.pdfparser import PDFParser, PDFDocument
    from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter,process_pdf
    from pdfminer.layout import LAParams
    from pdfminer.converter import PDFPageAggregator
    from pdfminer.pdfinterp import PDFTextExtractionNotAllowed
    from docx import Document
    document = Document()
    import warnings
    warnings.filterwarnings("ignore")
    from pdfminer.converter import TextConverter
    from pdfminer.layout import LAParams
    from io import StringIO
    from urllib.request import urlopen
    import pandas as pd
    
    def readPDF(pdfFile):
        rsrcmgr = PDFResourceManager()
        retstr = StringIO()
        laparams = LAParams()
        device = TextConverter(rsrcmgr, retstr, laparams=laparams)
    
        process_pdf(rsrcmgr, device, pdfFile)
        device.close()
    
        content = retstr.getvalue()
        retstr.close()
        return content
    def save_to_file(file_name, contents):
        fh = open(file_name, 'w')
        fh.write(contents)
        fh.close()
    
    save_to_file('mobiles.txt', 'your contents str')
    
    
    def main():
        pdfFile = urlopen("http://pythonscraping.com/pages/warandpeace/chapter1.pdf")
        outputString = readPDF(pdfFile)    #c.word
        save_to_file('c.csv',outputString)
    if __name__ == '__main__':
        main()
    

    3、安装Python DocX

    Python DocX目前是Python OpenXML的一部分,你可以用它打开Word 2007及以后的文档,而用它保存的文档可以在Microsoft Office 2007/2010, Microsoft Mac Office 2008, Google Docs, OpenOffice.org 3, and Apple iWork 08中打开。

    pip install python_docx
    

    安装经常报错,
    ERROR: Exception:
    Traceback (most recent call last):
    File “c:\users\l\appdata\local\programs\python\python37\lib\site-packages\pip_vendor\resolvelib\resolvers.py”, line 171, in _merge_into_criterion
    crit = self.state.criteria[name]
    KeyError: ‘python-docx’
    During handling of the above exception, another exception occurred:

    解决办法:

    直接下载python-docx安装包

    https://pypi.org/project/python-docx/#files

    pip install ./downloads/python-docx-0.8.10.tar.gz
    

    其中 ./downloads/python-docx-0.8.10.tar.gz表示的是下载的python-docx-0.8.10.tar.gz文件的真实路径。

    例如下载的python-docx-0.8.10.tar.gz文件处于C盘下,则应使用命令:

    pip install C:\python-docx-0.8.10.tar.gz
    

    python-docx-0.8.10 需要 lxml>=2.3.2 ,因此如果 lxml版本不对,还需要升级 lxml版本

    4、使用DocX保存Word

    from pdfminer.pdfparser import PDFParser, PDFDocument
    from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
    from pdfminer.layout import LAParams
    from pdfminer.converter import PDFPageAggregator
    from pdfminer.pdfinterp import PDFTextExtractionNotAllowed
    from docx import Document
    document = Document()
    import warnings
    warnings.filterwarnings("ignore")
    import os
    file_name=os.open('a.pdf',os.O_RDWR )
    
    def main():
    
        fn = open(file_name,'rb')
        parser = PDFParser(fn)
        doc = PDFDocument()
        parser.set_document(doc)
        doc.set_parser(parser)
        resource = PDFResourceManager()
        laparams = LAParams()
        device = PDFPageAggregator(resource,laparams=laparams)
        interpreter = PDFPageInterpreter(resource,device)
        for i in doc.get_pages():
            interpreter.process_page(i)
            layout = device.get_result()
            for out in layout:
                if hasattr(out,"get_text"):
                    content = out.get_text().replace(u'\xa0', u' ') 
                    document.add_paragraph(
                        content, style='ListBullet'   
                    )
                document.save('a'+'.docx')
        print ('处理完成')
     
    if __name__ == '__main__':
        main()
    
    展开全文
  • 60行Python代码,实现多线程PDFWord分解任务把PDF转为Word,分几步?两步,第一步读取PDF文件,第二步写入Word文件。是的,就是这么简单,借助Python第三方包,可以轻松实现上面两个过程,我们要用到pdfminer3k和...

    49c5abfee649

    60行Python代码,实现多线程PDF转Word

    分解任务

    把PDF转为Word,分几步?两步,第一步读取PDF文件,第二步写入Word文件。

    49c5abfee649

    是的,就是这么简单,借助Python第三方包,可以轻松实现上面两个过程,我们要用到pdfminer3k和python-docx这两个包

    读取PDF

    from pdfminer.pdfinterp import PDFResourceManager

    from pdfminer.pdfinterp import process_pdf

    from pdfminer.converter import TextConverter

    from pdfminer.layout import LAParams

    resource_manager = PDFResourceManager()

    return_str = StringIO()

    lap_params = LAParams()

    device = TextConverter(resource_manager, return_str, laparams=lap_params)

    process_pdf(resource_manager, device, file)  # file是使用open方法打开的PDF文件句柄

    device.close()

    # 此处content就是转换为文字的PDF内容

    content = return_str.getvalue()

    content变量存储的就是我们从PDF文件中读取出的文字内容,可以看到,使用pdfminer3k可以轻松完成这个任务。接下来我们需要把文字内容写入成一个word文件。

    写入Word

    from docx import Document

    doc = Document()

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

    paragraph = doc.add_paragraph()

    paragraph.add_run(remove_control_characters(line))

    doc.save(file_path)

    content是我们前面读取出的文字内容,由于是讲整个PDF读成一个字符串,所以需要使用split方法将每一行分隔开,然后按行写入word,否则所有的文字会在同一行。同时这段代码使用了一个remove_control_characters函数,这个函数是需要自己实现的,目的是移除控制字符(换行符、制表符、转义符等),因为python-docx是不支持控制字符写入的。

    def remove_control_characters(content):

    mpa = dict.fromkeys(range(32))

    return content.translate(mpa)

    控制字符就是ASCII码在32以下的,所以我们使用str的translate方法,把32以下的字符移除就可以。

    用是能用,但是太慢了!

    如果我们用上面代码去转换100个PDF文件,就会发现速度慢到难以接受,每个PDF都需要花很长时间才能转换好,怎么办?别急,接下来我们引入多线程,同时转换多个PDF,可以有效加快转换速度。

    import os

    from concurrent.futures import ProcessPoolExecutor

    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)

    代码中config是包含存储PDF文件夹地址和word文件夹地址的字典,使用Python标准库中的concurrent包,实现多进程,pdf_to_word方法是对上面读取PDF和写入word逻辑的封装。后面的while循环是查询任务是否进行完成。

    效果

    到这里,我们已经实现了多线程批量转换PDF为word文档。拿谋篇著名文章来试验一下,效果如图(左侧是转换后的word,右侧是PDF):

    不想写代码,只想用

    本文介绍的所有代码,已经打包成了一个独立可运行的项目,存放在github,如果不想自己写代码,可以直接clone或下载github项目运行。项目地址如下(记得点star)GitHub - qinweiming/pdf2word: 60行代码实现多线程PDF转Word

    展开全文
  • 那么学了编程的小伙伴,我们该如何用Pythonpdf转换成word呢?一、下载所需要的库1.pdfminer 安装库命令pip install pdfminer3kpdfminer3k是pdfminer的Python 3端口。PDFMiner是从PDF文档中提取信息的工具。与其他...

    很多时候,我们需要把文件的形式来回转换。那么学了编程的小伙伴,我们该如何用Python把pdf转换成word呢?

    一、下载所需要的库

    1.pdfminer 安装库命令pip install pdfminer3k

    pdfminer3k是pdfminer的Python 3端口。PDFMiner是从PDF文档中提取信息的工具。与其他PDF相关的工具不同,它完全专注于获取和分析文本数据。PDFMiner允许获取页面中文本的确切位置,以及其他信息,如

    字体或线条。它包含一个PDF转换器,可以将PDF文件转换为其他文本格式(如HTML)。它有一个可扩展的PDF解析器,可用于其他目的而不是文本分析。

    2. docx 安装库命令pip install python_docx

    Python DocX目前是Python OpenXML的一部分,你可以用它打开Word 2007及以后的文档,而用它保存的文档可以在Microsoft Office 2007/2010, Microsoft Mac Office 2008, Google Docs, OpenOffice.org 3, and Apple iWork 08中打开。

    二、代码

    注意:pdf中非图片构成的部分才能被成功转换1#-*- coding: UTF-8 -*-

    2#!/usr/bin/python

    3# -*- coding: utf-8 -*-

    4

    5import sys

    6import importlib

    7importlib.reload(sys)

    8

    9from pdfminer.pdfparser import PDFParser,PDFDocument

    10from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter

    11from pdfminer.converter import PDFPageAggregator

    12from pdfminer.layout import *

    13from pdfminer.pdfinterp import PDFTextExtractionNotAllowed

    14import os

    15

    16#设置工作目录文件夹

    17os.chdir(r'c:/users/dicey/desktop/codes/pdf-docx')

    18

    19'''

    20解析pdf文件,获取文件中包含的各种对象

    21'''

    22# 解析pdf文件函数

    23def parse(pdf_path):

    24 fp = open('diya.pdf', 'rb') # 以二进制读模式打开

    25 # 用文件对象来创建一个pdf文档分析器

    26 parser = PDFParser(fp)

    27 # 创建一个PDF文档

    28 doc = PDFDocument()

    29 # 连接分析器 与文档对象

    30 parser.set_document(doc)

    31 doc.set_parser(parser)

    32

    33 # 提供初始化密码

    34 # 如果没有密码 就创建一个空的字符串

    35 doc.initialize()

    36

    37 # 检测文档是否提供txt转换,不提供就忽略

    38 if not doc.is_extractable:

    39 raise PDFTextExtractionNotAllowed

    40 else:

    41 # 创建PDf 资源管理器 来管理共享资源

    42 rsrcmgr = PDFResourceManager()

    43 # 创建一个PDF设备对象

    44 laparams = LAParams()

    45 device = PDFPageAggregator(rsrcmgr, laparams=laparams)

    46 # 创建一个PDF解释器对象

    47 interpreter = PDFPageInterpreter(rsrcmgr, device)

    48

    49 # 用来计数页面,图片,曲线,figure,水平文本框等对象的数量

    50 num_page, num_image, num_curve, num_figure, num_TextBoxHorizontal = 0, 0, 0, 0, 0

    51

    52 # 循环遍历列表,每次处理一个page的内容

    53 for page in doc.get_pages(): # doc.get_pages() 获取page列表

    54 num_page += 1 # 页面增一

    55 interpreter.process_page(page)

    56 # 接受该页面的LTPage对象

    57 layout = device.get_result()

    58 for x in layout:

    59 if isinstance(x,LTImage): # 图片对象

    60 num_image += 1

    61 if isinstance(x,LTCurve): # 曲线对象

    62 num_curve += 1

    63 if isinstance(x,LTFigure): # figure对象

    64 num_figure += 1

    65 if isinstance(x, LTTextBoxHorizontal): # 获取文本内容

    66 num_TextBoxHorizontal += 1 # 水平文本框对象增一

    67 # 保存文本内容

    68 with open(r'test2.doc', 'a',encoding='utf-8') as f: #生成doc文件的文件名及路径

    69 results = x.get_text()

    70 f.write(results)

    71 f.write('\n')

    72 print('对象数量:\n','页面数:%s\n'%num_page,'图片数:%s\n'%num_image,'曲线数:%s\n'%num_curve,'水平文本框:%s\n'

    73 %num_TextBoxHorizontal)

    74

    75

    76if __name__ == '__main__':

    77 pdf_path = r'diya.pdf' #pdf文件路径及文件名

    78 parse(pdf_path)

    学会了的小伙伴赶紧行动起来~更多Python学习推荐:PyThon学习网教学中心。

    展开全文
  • Python-PDF转为Word

    千次阅读 2021-02-05 11:30:38
    手把手 | 20行Python代码教你批量将PDF转为Word作者|丁彦军给各位带来了一个免费简单快速的方法,手把手教你用Python批量处理PDF格式文件,获取自己想要的内容,存为word形式。在实现PDFWord功能之前,我们需要一...

    手把手 | 20行Python代码教你批量将PDF转为Word

    作者|丁彦军

    给各位带来了一个免费简单快速的方法,手把手教你用Python批量处理PDF格式文件,获取自己想要的内容,存为word形式。

    在实现PDF转Word功能之前,我们需要一个python的编写和运行环境,同时安装好相关的依赖包。 对于python环境,我们推荐使用PyCharm。 在本地电脑环境,anaconda提供了非常便利的安装和部署。

    PDF转Word功能所需的依赖包如下:

    PDFParser(文档分析器)

    PDFDocument(文档对象)

    PDFResourceManager(资源管理器)

    PDFPageInterpreter(解释器)

    PDFPageAggregator(聚合器)

    LAParams(参数分析器)前期准备工作

    说明:本文是在Windows7下使用python最新的3.6版本

    1.安装pdfminer3k模块

    安装anaconda后,直接可以通过pip安装

    c29d6cc6ee5bd5415cdf7d72d0c8b108.png

    2.若安装不成功,可以试试下面方法

    首先下载pdfminer3k:https://pypi.python.org/pypi/pdfminer3k;然后安装pdfminer,将下载好的pdfminer3k解压到D:或其他合适的盘符,通过win+r 打开运行窗口,输入cmd;输入D:切换到D盘,cd pdfminer3k(pdf解压的文件夹),输入setup.py install安装软件。

    6bd5ed68a91804bbba71ee2bd35c2055.png

    最终显示Finished,则代表成功

    代码实操

    1.导入相关包

    from pdfminer.pdfparser import PDFParser, PDFDocument

    from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter

    from pdfminer.layout import LAParams

    from pdfminer.converter import PDFPageAggregator

    整体思路为:构造文档对象,解析文档对象,提取所需内容

    ab303445c25ba3ef99f51c3152c88c68.png

    构造文档对象

    9cb746a9fa7bb3fd76a49ee40297db11.png

    构造解释器

    2.导入需要解析的PDF文件

    将所需解析的文件与执行代码放到同一个目录下,如图:

    8126306fcfe54c69c519ce2f98ba8999.png968d427c46af47c3c4ad9a41c0bb97b0.png

    test.pdf内容

    3.具体代码如下:

    from pdfminer.pdfparser import PDFParser, PDFDocument

    from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter

    from pdfminer.layout import LAParams

    from pdfminer.converter import PDFPageAggregator

    from pdfminer.pdfinterp import PDFTextExtractionNotAllowed

    def parse:

    #rb以二进制读模式打开本地pdf文件

    fn = open('test.pdf','rb')

    #创建一个pdf文档分析器

    parser = PDFParser

    #创建一个PDF文档

    doc = PDFDocument

    #连接分析器 与文档对象

    parser.set_document

    doc.set_parser

    # 提供初始化密码doc.initialize("lianxipython")

    # 如果没有密码 就创建一个空的字符串

    doc.initialize("")

    # 检测文档是否提供txt转换,不提供就忽略

    if not doc.is_extractable:

    raise PDFTextExtractionNotAllowed

    else:

    #创建PDf资源管理器

    resource = PDFResourceManager

    #创建一个PDF参数分析器

    laparams = LAParams

    #创建聚合器,用于读取文档的对象

    device = PDFPageAggregator(resource,laparams=laparams)

    #创建解释器,对文档编码,解释成Python能够识别的格式

    interpreter = PDFPageInterpreter(resource,device)

    # 循环遍历列表,每次处理一页的内容

    # doc.get_pages 获取page列表

    for page in doc.get_pages:

    #利用解释器的process_page方法解析读取单独页数

    interpreter.process_page(page)

    #使用聚合器get_result方法获取内容

    layout = device.get_result

    #这里layout是一个LTPage对象,里面存放着这个page解析出的各种对象

    for out in layout:

    #判断是否含有get_text方法,获取我们想要的文字

    if hasattr(out,"get_text"):

    print(out.get_text)

    with open('test.txt','a') as f:

    f.write(out.get_text+'\n')

    if __name__ == '__main__':

    parse

    最终得到的test.txt结果如下:

    e1c537b1956f05100d12f1aa7abad2a7.png

    结束

    对于Python批量PDF转Word的操作介绍就到此,本文仅仅作为一种运用库展示代码编写过程,具体技术还需要有兴趣的朋友,与我一起讨论专研,互相学习进步。

    本文为投稿作品,仅代表个人观点。

    来源:oschina

    链接:https://my.oschina.net/u/4412813/blog/3569121

    展开全文
  • 四行Python代码实现将word文件高效转换PDF文件,对于使用Office的小伙伴从此就告别Office转PDF页数限制,时间效率低下等问题;同时对于使用WPS的小伙伴再也不用担心将WordPDF需要会员;仅仅4行核心代码即可实现...
  • python实现pdfword文档

    2020-12-05 12:13:38
    如何使用python将pdf文件改成word文件用软件,使用之后然后有两种结果 1、转化出来的就是想要的word,这种情况最理想了; 2、转化出来的word上都是图片,需要上网找“ABBYY finereader v9”一类的文字识别软件。...
  • python-pdf2word.zip

    2020-10-12 13:38:37
    本资源为python实现pdfword,简单的几行代码就可以实现pdfword,后续会完善并发布python桌面端应用,请继续关注
  • 主要为大家详细介绍了python批量实现Word文件转换PDF文件的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 在我的项目中,我需要转换成双栏格式的pdf。基本上,我需要它们转换文本文件,我使用...这就是为什么我在考虑是否可以像一些在线工具,即Nitro Cloud一样,将pdf转换word,以保持完整的顺序。但是我需要使用py...
  • PythonPDF转为Word方法总结

    千次阅读 2021-04-24 17:59:36
    先讲一下为啥要写这个文章,网上其实很多这种PDF转化的代码和软件。我一直想用Python做,但是网上搜到的代码很多都不能用,很多是2.7版本的代码,再就是PDF需要用到的库在...1 把标准格式的PDF转为Word适用于Python3.
  • python pdfword的两种方法

    千次阅读 2021-05-11 18:00:10
    另外,pdf文档中避免出现 ‘\n’ 等转义字符,否则可能会出现一些识别歧义。 使用情景:文件量大,且只对文本信息有要求的情况 import os from configparser import ConfigParser from io import StringIO from io ...
  • PythonPDF文件转换成Word文档

    万次阅读 2018-09-29 18:34:00
    首先,下载所需要的库 1 :pdfminer 安装库命令: pip install pdfminer3k 2: docx 安装库命令: ...(注意:pdf中非图片构成的部分才能被成功转换) 1#-*-coding:UTF-8-*- 2#!/usr/bin/python 3#-*-...
  • 前言 某个夜深人静的夜晚,夜微凉风微扬,月光照进我的书房~ 当我打开文件夹以回顾往事之余,惊现许多看似杂乱的无聊代码。我拍腿正坐,一个想法...网上一搜,你可以发现很多PDF转换的工具,其中不乏在线转换的网站,
  • 本文实例为大家分享了python3docx转换成pdf文件的具体代码,供大家参考,具体内容如下 直接上代码 # -*- encoding:utf-8 -*- """ author:lgh """ from win32com.client import Dispatch, constants, gencache ...
  • Python将Word成PDF

    2021-02-03 01:30:08
    Dolphin Long手把手教你使用Python将Word转化成PDF。首先我们来看一下我们需要的工具:pywin32下载地址:https://sourceforge.net/projects/pywin32/files/pywin32/Build%20221/安装完毕之后我们就可以开始编程了。...
  • sodngl的专栏03-111670如何将PDF转换为不带乱码的单词如何将PDF转换Word将PDF转换Word不是一项技术性的任务,但是由于许对此问题this昧不清,因此他们认为PDF转换Word是一个复杂的过程. 实际上,否则,将PDF...
  • 一:下载所需要的库 1 :pdfminer 安装库命令pip install pdfminer3k pdfminer3k是pdfminer的Python 3端口。PDFMiner是从PDF文档中提取信息的工具。...它包含一个PDF转换器,可以PDF文件转换...
  • I have tons of Word and Excel ... I want to convert many Word files in folders by sub folders to PDF, and I try following code.This code is not active (I mean there aren't Word convert to PDF) alth...
  • 又是美好的一天,如果大家因为PDFword而烦恼的话可以尝试用用PythonPDFMiner3K,这是一个非常好用的库,下面是把任意PDF字符串,然后用stingio转化成文件对象:#!/usr/bin/env python# -*- coding:utf-8 -*-#...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,463
精华内容 3,785
关键字:

python将pdf转换成word

python 订阅