【AI】使用OCR处理pdf

pdf如果是扫描件,没有办法发送给LLM比如gemini去读取,需要使用OCR处理。

需要:

1. pdf2image 和 poppler

安装方法和路径:

https://pdf2image.readthedocs.io/en/latest/installation.html

poppler也在上个路径中可以找到

安装完成后执行下面脚本:

python 复制代码
import os
from pdf2image import convert_from_path

# --- 1. 配置你的路径 ---

# 你的PDF文件所在的路径
pdf_file_path = r'c:\zbj\script\gemini\1.pdf'

# 图片将被保存到的文件夹
# 脚本会自动创建这个文件夹
output_images_dir = r'c:\zbj\script\gemini\pdf_images'

# !!【非常重要】请将这里修改为你自己电脑上Poppler的'bin'文件夹路径 !!
# 例如: r'C:\poppler\poppler-24.02.0\Library\bin'
poppler_bin_path = r'C:\path\to\your\poppler\Library\bin' # <--- 在这里修改


# --- 2. 执行转换 ---

def convert_pdf_to_images(pdf_path, output_dir, poppler_path):
    """
    将PDF的每一页转换为PNG图片。
    """
    # 检查Poppler路径是否被修改
    if 'C:\\path\\to\\your\\poppler\\Library\\bin' in poppler_path:
        print("错误:请务必在脚本中修改 'poppler_bin_path' 变量,")
        print(f"将其设置为你电脑上Poppler的bin文件夹的实际路径。")
        return

    # 创建输出文件夹(如果不存在)
    if not os.path.exists(output_dir):
        os.makedirs(output_dir)
        print(f"已创建输出文件夹: {output_dir}")

    print(f"正在从 {pdf_path} 读取PDF文件...")

    try:
        # 使用convert_from_path进行转换
        # poppler_path参数是必需的
        images = convert_from_path(
            pdf_path=pdf_path,
            output_folder=output_dir,
            poppler_path=poppler_path,
            fmt='png',  # 输出格式为png
            output_file='page_' # 图片文件名前缀
        )
        
        print(f"\n转换成功!")
        print(f"总共 {len(images)} 页已被转换为图片,并保存在以下目录中:")
        print(output_dir)

    except Exception as e:
        print("\n转换过程中发生错误!")
        print("请仔细检查以下几点:")
        print(f"1. Poppler路径是否正确?当前设置为: '{poppler_path}'")
        print("2. 是否下载并解压了Poppler?")
        print("3. Poppler的版本(64位/32位)是否与你的Python解释器匹配?")
        print(f"\n详细错误信息: {e}")


# --- 运行主函数 ---
if __name__ == '__main__':
    convert_pdf_to_images(pdf_file_path, output_images_dir, poppler_bin_path)

1000页的pdf大概需要执行10min,执行完成后每一页pdf都被转换成png图片存在文件夹pdf_images里。

  1. 使用paddle OCR进行OCR识别
    环境安装:
    https://www.paddleocr.ai/main/quick_start.html#1-paddlepaddle
相关推荐
这个DBA有点耶1 小时前
银行业市占率最高的国产数据库是谁?先搞清楚“市占率”的四种口径
数据库·程序员·架构
用户6279947182621 小时前
南大通用GBase 8a之基于审计日志的冷温热数据分析
数据库
数据库小学妹2 小时前
数据库运维五级成熟度:监控、备份、高可用怎么串起来
运维·数据库·监控
一个天蝎座的程序猿2 小时前
为了给报表提速,我把金仓KES的列存储折腾了个遍:聊聊KES的技术能力
数据库
飞越未来云城的霓虹飞猪2 小时前
AI 数据库地图:从 PostgreSQL 到向量数据库,一次看懂 AI 时代的数据底座
数据库
不像程序员的程序媛2 小时前
导出mysql数据结构
数据库·mysql
GlobalTradercrb2 小时前
独立站SEO先写博客还是先优化产品页?看站点阶段
数据库·人工智能·google·pdf·go·seo
深圳市快瞳科技有限公司2 小时前
人车准入审核的工程实现:证件OCR、联网查验与业务决策
计算机视觉·ocr·vin码查询·车辆证件ocr·车辆信息查验·汽车ocr
PingCAP3 小时前
善战者无赫赫之功:消费金融核心系统的数据库选型与升级路径
数据库·分布式·架构
花间相见3 小时前
【计算基础|MySQL09】索引(下):失效与设计
数据库·后端·面试