python读取pdf文档

复制代码
import io
import pdfplumber
from opencc import OpenCC
import fitz  # pymupdf
import os

file_path = '/document/pdf/xxx.pdf'
output_dir = '/classification/pdf/images'
#获取图片 demo
def extract_images_from_pdf(pdf_path, output_dir):
    # 确保输出目录存在
    if not os.path.exists(output_dir):
        os.makedirs(output_dir)
    # 打开PDF文件
    doc = fitz.open(pdf_path)
    page_count = doc.page_count
    # 遍历PDF的每一页
    for page_num in range(page_count):
        page = doc.load_page(page_num)
        # 获取页面中的图片信息
        images = page.get_images(full=True)
        image_index = 0
        for img_index, img in enumerate(images):
            xref = img[0]
            base_image = doc.extract_image(xref)
            image_bytes = base_image["image"]
            image_ext = base_image["ext"]
            # 使用Pillow将图片保存到本地
            from PIL import Image
            image = Image.open(io.BytesIO(image_bytes))
            image_path = os.path.join(output_dir, f"image_{page_num + 1}_{image_index + 1}.{image_ext}")
            image.save(image_path)
            image_index += 1
    doc.close()


# 使用示例
extract_images_from_pdf(file_path, output_dir)


cc = OpenCC('t2s')
def read_pdf_with_pdfplumber(file_path):
    images = []
    with (pdfplumber.open(file_path) as pdf):
        num_pages = len(pdf.pages)
        print(f"Number of pages: {num_pages}")
        text = pdf.pages[0].extract_text()
        text = cc.convert(text)
        print(text)
# 示例用法
read_pdf_with_pdfplumber(file_path)
相关推荐
2301_803875612 小时前
PHP 中处理会话数组时的类型错误解析与修复指南
jvm·数据库·python
m0_743623922 小时前
c++如何批量修改文件后缀名_std--filesystem--replace_extension【实战】
jvm·数据库·python
2401_873479402 小时前
如何利用IP查询定位识别电商刷单?4个关键指标+工具配置方案
开发语言·tcp/ip·php
我爱cope2 小时前
【从0开始学设计模式-10| 装饰模式】
java·开发语言·设计模式
2501_914245932 小时前
CSS如何处理CSS变量作用域冲突_利用特定类名重写变量值
jvm·数据库·python
菜鸟学Python2 小时前
Python生态在悄悄改变:FastAPI全面反超,Django和Flask还行吗?
开发语言·python·django·flask·fastapi
<-->2 小时前
Megatron(全称 Megatron-LM,由 NVIDIA 开发)和 DeepSpeed(由 Microsoft 开发)
人工智能·pytorch·python·深度学习·transformer
测试19983 小时前
2026最新软件测试面试八股文【附文档】
自动化测试·软件测试·python·测试工具·面试·职场和发展·测试用例
浪浪小洋3 小时前
c++ qt课设定制
开发语言·c++
charlie1145141914 小时前
嵌入式C++工程实践第16篇:第四次重构 —— LED模板,从通用GPIO到专用抽象
c语言·开发语言·c++·驱动开发·嵌入式硬件·重构