You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:如何将URL中PDF表格转为Pandas DataFrame?扫描版PDF处理遇阻

扫描版PDF转Pandas DataFrame的解决方案

针对扫描生成的图片式PDF(无可选中文本),以下是两种可落地的解决思路:

方案一:使用tabula-py的OCR模式

tabula支持通过Tesseract进行OCR识别,前提是先安装好Java环境和Tesseract OCR引擎。代码示例:

import tabula as tb

# 扫描版PDF路径/URL
pdf_path = "https://rrc.texas.gov/media/uzzdihmq/2023-july-10-0026.pdf"

# 启用OCR模式,指定语言为英文
dfs = tb.read_pdf(
    pdf_path,
    pages=1,
    guess=True,
    ocr=True,
    ocr_language="eng"
)

# 输出解析后的DataFrame
print(dfs[0])

注意:需确保已安装tabula-py、tesseract-ocr,并配置好环境变量让Java和Tesseract能被系统调用。

方案二:图片预处理+Tesseract表格OCR+数据解析

如果tabula的OCR模式效果不佳,可手动处理PDF转图片,优化图片后再做OCR,最后解析为DataFrame:

  1. 先安装依赖库:pdf2image、opencv-python、pytesseract、pandas
  2. 代码示例:
from pdf2image import convert_from_path
import cv2
import pytesseract
import pandas as pd
import numpy as np

# 1. 将PDF转换为图片
pages = convert_from_path("https://rrc.texas.gov/media/uzzdihmq/2023-july-10-0026.pdf")

# 2. 图片预处理(提升OCR准确率)
def preprocess_image(img):
    # 转为灰度图
    gray = cv2.cvtColor(np.array(img), cv2.COLOR_RGB2GRAY)
    # 自适应二值化
    thresh = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV, 11, 2)
    # 降噪处理
    denoised = cv2.medianBlur(thresh, 3)
    return denoised

processed_img = preprocess_image(pages[0])

# 3. Tesseract OCR识别,输出带布局信息的DataFrame
ocr_result = pytesseract.image_to_data(
    processed_img,
    lang="eng",
    output_type=pytesseract.Output.DATAFRAME
)

# 4. 筛选有效文本并整理为表格
valid_text = ocr_result[ocr_result["text"].notna() & (ocr_result["text"].strip() != "")]
# 按行分组拼接文本
rows = valid_text.groupby("line_num")["text"].apply(lambda x: " ".join(x)).tolist()
# 拆分列(若为固定宽度表格,需手动根据像素坐标分割,此处示例按空格拆分)
df = pd.DataFrame([row.split() for row in rows[1:]], columns=rows[0].split())

print(df)

说明:如果是固定宽度布局的表格,可通过pytesseract.image_to_boxes获取字符坐标,手动定位列边界后拆分文本。

额外优化建议

  • 确保Tesseract安装对应语言的训练数据,提升识别准确率。
  • 若扫描PDF存在倾斜,可在预处理步骤加入霍夫变换检测角度,对图片做旋转校正。

内容的提问来源于stack exchange,提问作者jare2620

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 08:28:27