当前位置: 首页 > article >正文

python实现批量pdf转txt和word

文章目录

    • 背景需求
    • 环境安装
    • 完整代码
    • 效果

背景需求

已经获取到了大量的pdf在download文件夹中,但是我需要的是txt文件和word文件~

环境安装

pip install pdf2docx pdfminer.six

完整代码

# pip install pdf2docx pdfminer.six

import os
from pdf2docx import Converter
from pdfminer.high_level import extract_text
# 忽略警告
import warnings
warnings.filterwarnings("ignore", category=UserWarning, module="pdf2docx")

# pdf转txt
def pdf_to_txt(pdf_path, txt_path):
    text = extract_text(pdf_path)
    with open(txt_path, 'w', encoding='utf-8') as f:
        f.write(text)

# pdf转word
def pdf_to_docx(pdf_path, docx_path):
    cv = Converter(pdf_path)
    cv.convert(docx_path, start=0, end=None)
    cv.close()

# 分批转换,文件格式检测
def batch_convert(download_folder, data_folder, output_format='txt'):
    # 确保输出文件夹存在
    if not os.path.exists(data_folder):
        os.makedirs(data_folder)

    # 遍历download文件夹中的所有PDF文件
    for filename in os.listdir(download_folder):
        if filename.endswith('.pdf'):
            pdf_path = os.path.join(download_folder, filename)

            if output_format == 'txt':
                txt_filename = os.path.splitext(filename)[0] + '.txt'
                txt_path = os.path.join(data_folder, txt_filename)
                pdf_to_txt(pdf_path, txt_path)

            elif output_format == 'docx':
                docx_filename = os.path.splitext(filename)[0] + '.docx'
                docx_path = os.path.join(data_folder, docx_filename)
                pdf_to_docx(pdf_path, docx_path)


# 转换txt
batch_convert('download', 'data_txt', output_format='txt')
# 转换word文件
batch_convert('download', 'data_docx', output_format='docx')

效果

在这里插入图片描述


http://www.kler.cn/news/106945.html

相关文章:

  • CVE-2022-32991靶场复现
  • 竞赛 深度学习实现行人重识别 - python opencv yolo Reid
  • Win10+Ubuntu20.04双系统双硬盘(SSD+HDD)安装与启动
  • 前端使用 printJS 插件打印多页:第一页空白问题解决
  • 数据结构与算法之矩阵: Leetcode 134. 螺旋矩阵 (Typescript版)
  • Spring Boot集成RESTful API
  • el-table添加固定高度height后高度自适应
  • 【前端】NodeJS核心知识点整理
  • Git(SourceTree)变基操作使用
  • 配置Sentinel 控制台
  • 全景环视AVM标定
  • 虚拟化 vs. 裸金属:K8s 部署环境架构与特性对比
  • CSS 滚动驱动动画与 @keyframes 新语法
  • 406. 根据身高重建队列
  • 毅速丨哪些金属材料在3D打印中应用最多
  • 【跟小嘉学 Rust 编程】三十三、Rust的Web开发框架之一: Actix-Web的基础
  • 基于机器视觉的二维码识别检测 - opencv 二维码 识别检测 机器视觉 计算机竞赛
  • Java操作符
  • R语言入门看这一章就够了(上)
  • SQL查询优化---如何查询截取分析
  • C++之特殊类的设计
  • MATLAB中polyvalm函数用法
  • Java零基础入门-关系运算符
  • Splunk 之 filed 恢复
  • unity面试八股文 - 常用工具与算法
  • Map集合 遍历:lambda方式
  • 计算机视觉的相机选型
  • 力扣labuladong——一刷day09
  • 通过阿里云创建accessKeyId和accessKeySecret
  • 线程池的理解