python 数据处理

pdf转txt    三种方法,使用不同的包

1.pdfminer  按段转,可以实现那种两栏的pdf。 每页得到的x.get_text()是一个列表,把这一页的内容分割存储了。

需要注意,pdfminer版本不同,函数调用方式有差异,得到的每页的内容排列方式也不同。新版的pdfminer得到的表格数据都在一行,与汉字混合。老版的pdfminer提取出来的表格每个数据在一行(方便去除或者提取)

2.pypdf2  按段转,可以实现那种两栏的pdf。 每页得到的pageContext是一个大的字符串。表格数据按照表格原本的形式排列,对表格数据处理比较友好。

3.pdfplumber  按行转,对于复杂pdf效果不好

下面是三个包的代码展示

1.pdfminer 

参考(63条消息) 【最新实用版】Python批量将pdf文本提取并存储到txt文件中_sucka136的博客-CSDN博客_python批量提取pdf中的信息

from pdfminer.pdfparser import PDFParser
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfpage import PDFTextExtractionNotAllowed
from pdfminer.pdfpage import PDFPage
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import PDFPageAggregator
from pdfminer.layout import LAParams, LTTextBox
from io import StringIO
from io import open
from pdfminer.pdftypes import resolve1

def read(path):
    fp = open(path, 'rb')  # 以二进制读模式打开
    parser = PDFParser(fp)   # 用文件对象创建一个PDF文档分析器
    doc = PDFDocument(parser, '')  # 创建一个PDF文档
    parser.set_document(doc)  # 连接分析器,与文档对象
    pageNum=resolve1(doc.catalog['Pages'])['Count']

    # 检测文档是否提供txt转换,不提供就忽略
    if not doc.is_extractable:
        raise PDFTextExtractionNotAllowed
    else:
        # 创建PDf 资源管理器 来管理共享资源
        rsrcmgr = PDFResourceManager()
        # 创建一个PDF聚合器,包含资源管理器与参数分析器
        laparams = LAParams()
        device = PDFPageAggregator(rsrcmgr, laparams=laparams)
        # 创建一个PDF解释器对象
        interpreter = PDFPageInterpreter(rsrcmgr, device)

        # 循环遍历列表,每次处理一个page的内容   把page的内容读取出来,保存
        page0 = ''
        for i, page in enumerate(PDFPage.create_pages(doc)):
            """
            下面是对page的文本进行提取,写入到txt中
            """
            interpreter.process_page(page)          
            if page is not None:
                interpreter.process_page(page)    
            # 接受该页面的LTPage对象
            layout = device.get_result()
            # print(layout)
            # 这里layout是一个LTPage对象,里面存放着这个 page 解析出的各种对象
            # 包括 LTTextBox, LTFigure, LTImage, LTTextBoxHorizontal 等

            line0='\n\n'
            for x in layout:
                if isinstance(x, LTTextBox):
                    line0 = line0 + x.get_text().strip()

            page0 = page0 + line0
        return page0 #返回pdf文件中所有提取到的文本内容
if __name__ == '__main__':

    pdf_path = 
    txt_path = 

    content=read(pdf_path)
    with open(txt_path, 'w+', encoding='utf8') as f:
        f.write(content)

2.pypdf2

import os
import sys
import time
import importlib
import PyPDF2
from PyPDF2 import PdfFileWriter



def pdf2txt(pdf_path, txt_path):
    with open(pdf_path, 'rb') as pdf_file, open(txt_path, "w+", encoding='utf-8') as     txt_file:   # 以二进制读模式打开
        fileReader = PyPDF2.PdfFileReader(pdf_file)
        pdfFileWriter = PdfFileWriter()
        pageNum = fileReader.numPages
        content = ''
      
        for i in range(pageNum):
            pageObj = fileReader.getPage(i)
            pageText = pageObj.extractText()
         
            content = content +pageText + "\n"
        txt_file.write(content)

if __name__ == '__main__':
    pdf_path = xx
    txt_path =xx
    pdf2txt(pdf_path, txt_path)

3.pdfplumber 

参考(63条消息) 码力十足学量化|用Python将pdf文件转换为txt文件_码力十足学量化的博客-CSDN博客_python pdf转txt

import pdfplumber


pdf_filename = xx
txt_filename = xx

pdf=pdfplumber.open(pdf_filename) # 打开PDF文件
pages=pdf.pages # 通过pages属性获取所有页的信息,此时pages是一个列表

text_all=[]
for page in pages:
    # 用extract_text()函数获取每页文本内容
    text=page.extract_text()
    text_all.append(text)


text_all="".join(text_all)
print(text_all)

# 将文件保存为txt文本格式
txt_file=open(txt_filename,mode='a',encoding='utf-8')
txt_file.write(text_all)
pdf.close()

pdf转word

from pdf2docx import Converter

pdf_file = xx
docx_file = xx

# convert pdf to docx
cv = Converter(pdf_file)
cv.convert(docx_file, start=0, end=None)
cv.close()

word转txt

参考(63条消息) python docx转换成txt文本_Gospel303的博客-CSDN博客_python docx转txt

from win32com import client as wc

def Translate(input, output):
    # 转换
    wordapp = wc.Dispatch('Word.Application')
    doc = wordapp.Documents.Open(input)
    # 为了让python可以在后续操作中r方式读取txt和不产生乱码,参数为4
    doc.SaveAs(output, 4)
    doc.Close()


if __name__ == '__main__':
    input_file =xx
    output_file = xx
    Translate(input_file, output_file)

pdf去除表格

先用pypdf2将pdf转为txt

再用正则表达式去除跟表格有关的内容(需要找规律)

pdf得到表格

调用百度api识别表格 python+百度API识别图片中表格并保存到excel - 紫电_2021 - 博客园

可以用pypdf2转为txt,然后用re获取表格内容

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要将WPS文档转化PDF文件,可以使用Python的PyPDF2库来实现。以下是一个示例代码: ```python import os from PyPDF2 import PdfWriter from win32com.client import Dispatch def convert_wps_to_pdf(input_file_path, output_file_path): # 创建一个新的PDF写入对象 pdf_writer = PdfWriter() # 启动WPS应用程序 wps_app = Dispatch("kwps.Application") wps_app.Visible = False # 打开WPS文档 wps_doc = wps_app.Documents.Open(input_file_path) # 将每一页WPS文档内容保存为图片 temp_image_path = os.path.join(os.getcwd(), "temp_image.jpg") for i in range(0, wps_doc.PageCount): wps_doc.ExportAsFixedFormat(temp_image_path, 17, From=i + 1, To=i + 1) # 导出为JPG格式 # 将图片添加到PDF with open(temp_image_path, "rb") as image_file: pdf_writer.add_page() pdf_writer.append(image_file.read()) # 关闭WPS文档和应用程序 wps_doc.Close() wps_app.Quit() # 保存PDF文件 with open(output_file_path, "wb") as output_file: pdf_writer.write(output_file) # 删除临时图片文件 os.remove(temp_image_path) # 示例用法 input_file = "path/to/input.wps" output_file = "path/to/output.pdf" convert_wps_to_pdf(input_file, output_file) ``` 以上代码使用PyPDF2库创建了一个空白的PDF文件,然后通过调用WPS应用程序的COM接口,将每一页WPS文档内容导出为JPG图片,并将这些图片逐页添加到PDF文件,最后保存为PDF文件。请确保安装了PyPDF2库和WPS Office应用程序,并将`input_file`替换为要转换的WPS文档路径,`output_file`替换为要保存的PDF文件路径。 ### 回答2: wps转化pdf的py代码可以通过使用python的`comtypes`库来实现。下面是一个用于将wps文件转换为pdf的简单示例代码: ```python import os import comtypes.client def convert_wps_to_pdf(wps_path, pdf_path): try: wps = comtypes.client.CreateObject('KWPS.Application') wps.Visible = True doc = wps.Documents.Open(wps_path) doc.ExportAsFixedFormat(pdf_path, 17) # 17代表以pdf格式保存 doc.Close() wps.Quit() return True except Exception as e: print(f"转换失败: {str(e)}") return False # 使用示例 wps_file = 'example.wps' # 待转换的wps文件路径 pdf_file = 'example.pdf' # 转换后的pdf文件路径 if convert_wps_to_pdf(wps_file, pdf_file): print("转换成功") else: print("转换失败") ``` 在此代码,我们首先创建了一个`KWPS.Application`实例,这将启动WPS应用程序。然后,我们打开指定的wps文件并将其导出为pdf格式(使用17表示)。最后,我们关闭文档和WPS应用程序。 请注意,为了运行此代码,您需要先安装`comtypes`库。可以通过运行以下命令安装: ``` pip install comtypes ``` ### 回答3: 要将WPS文档转换为PDF文件,可以使用Python的`PyPDF2`库。首先,确保已经安装了`PyPDF2`库。 接下来,可以编写以下Python代码来实现WPS转换为PDF的功能: ```python import sys import os from PyPDF2 import PdfWriter from win32com.client import Dispatch def wps_to_pdf(input_file, output_file): # 新建一个WPS应用程序对象 wps = Dispatch('kwps.Application') # 打开WPS文档 doc = wps.Documents.Open(input_file, ReadOnly=1) # 将WPS文档另存为PDF doc.ExportAsFixedFormat(output_file, 17) # 17表示PDF格式 # 关闭WPS文档 doc.Close() # 退出WPS应用程序 wps.Quit() if __name__ == '__main__': # 传递命令行参数,获取输入文件路径和输出文件路径 input_file = sys.argv[1] output_file = sys.argv[2] # 检查输入文件是否存在 if not os.path.exists(input_file): print(f"文件 '{input_file}' 不存在") sys.exit(1) # 调用函数将WPS文档转换为PDF wps_to_pdf(input_file, output_file) ``` 请注意,该代码依赖于Windows系统的WPS软件,因此只能在Windows环境运行。另外,该代码使用了第三方库`win32com.client`,用于与WPS软件进行交互。 使用以上代码,你只需将WPS文档的路径和输出PDF文件的路径作为命令行参数传递给该脚本,即可将WPS文档转换为PDF。例如,可以在命令行运行以下命令: ``` python wps_to_pdf.py input.docx output.pdf ``` 这将把名为`input.docx`的WPS文档转换为名为`output.pdf`的PDF文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值