能否用Python将PDF图表中的时间序列数据转换为Excel?
能否用Python将含图表的PDF转换为Excel并提取时间序列数据?
可以实现,但具体难度取决于PDF中图表的存储格式:
1. 矢量格式图表(非图片)
这类图表由PDF生成工具直接插入,数据通常以文本或矢量元素形式存储在PDF内部,提取难度较低。
实现步骤:
- 用PDF解析库定位图表区域,提取其中的日期和数值文本
- 整理数据为结构化格式后导出到Excel
示例代码:
import pdfplumber import pandas as pd import re # 打开目标PDF文件 with pdfplumber.open("blackrock_fund_prospectus.pdf") as pdf: # 定位图表所在页面(示例为第3页,索引从0开始) target_page = pdf.pages[2] # 裁剪图表区域(根据实际坐标调整,可通过pdfplumber可视化工具获取) chart_area = target_page.crop((100, 200, 700, 600)) # 提取裁剪区域内的文本 chart_text = chart_area.extract_text() # 正则匹配日期(示例为DD/MM/YYYY格式)与对应数值 data_pattern = r"(\d{2}/\d{2}/\d{4})\s+([\d\.,]+)" matched_data = re.findall(data_pattern, chart_text) # 转换为DataFrame并导出到Excel df = pd.DataFrame(matched_data, columns=["日期", "基金数据"]) df.to_excel("extracted_fund_data.xlsx", index=False)
2. 位图格式图表(图片/扫描件)
如果图表是嵌入的图片或扫描生成的,需要结合OCR(光学字符识别)和图像分析技术,难度较高,准确率依赖图像质量。
实现步骤:
- 从PDF中提取图表图片
- 预处理图片(降噪、增强对比度)
- 用OCR提取文本,再匹配日期和数值
示例代码:
import cv2 import pytesseract import pandas as pd import fitz # PyMuPDF # 设置Tesseract路径(根据本地安装位置调整) pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe" # 从PDF中提取图表图片 doc = fitz.open("blackrock_fund_prospectus.pdf") page = doc[2] # 目标页面 image_list = page.get_images() # 提取第一张图片(假设图表是页面内的第一张图片) xref = image_list[0][0] base_image = doc.extract_image(xref) image_bytes = base_image["image"] with open("chart_image.png", "wb") as f: f.write(image_bytes) # 图片预处理 img = cv2.imread("chart_image.png") gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 二值化增强文本对比度 thresh_img = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1] # OCR提取文本并匹配数据 ocr_text = pytesseract.image_to_string(thresh_img) data_pattern = r"(\d{2}/\d{2}/\d{4})\s+([\d\.,]+)" matched_data = re.findall(data_pattern, ocr_text) # 导出到Excel df = pd.DataFrame(matched_data, columns=["日期", "基金数据"]) df.to_excel("extracted_image_chart_data.xlsx", index=False)
注意事项
- 实际PDF结构可能复杂,需手动调整裁剪坐标或正则表达式以匹配特定格式
- 如果PDF包含与图表搭配的数据表格,可用
tabula-py直接提取表格数据,效率更高 - 加密PDF需先解密才能进行解析操作
内容的提问来源于stack exchange,提问作者Farrep7
相关产品推荐
相关产品推荐

