TypechoJoeTheme

至尊技术网

统计
登录
用户名
密码

使用Python从PDF中提取饼图数据:基于图像处理的实战指南,python pdf 提取图片

2025-12-18
/
0 评论
/
28 阅读
/
正在检测是否收录...
12/18

正文:

在数据分析工作中,PDF文件中的图表(如饼图)往往包含关键信息,但直接提取这些数据却是一大挑战。本文将手把手教你如何用Python结合图像处理技术,从PDF中高效提取饼图数据,并转化为结构化格式。

1. 为什么需要从PDF提取饼图数据?

许多行业报告、学术论文或商业文档以PDF形式发布,其中的饼图直观展示了比例分布。但PDF本质是“静态”格式,无法直接编辑或提取数据。传统手动录入效率低且易出错,而基于Python的自动化方案能大幅提升效率。

2. 技术方案概述

我们的流程分为三步:
1. PDF转图像:将PDF页面转为可处理的图片格式(如PNG)。
2. 图像分析与分割:定位饼图区域,分割不同颜色的扇形。
3. OCR识别:提取扇形标签和数值。

2.1 依赖库安装

确保安装以下Python库:

pip install pdf2image opencv-python numpy pytesseract matplotlib

3. 实战步骤详解

步骤1:PDF转图像

使用pdf2image将PDF转为图像:

from pdf2image import convert_from_path  

# 将PDF第一页转为PNG  
pages = convert_from_path("report.pdf", first_page=1, last_page=1)  
pages[0].save("page1.png", "PNG")

步骤2:定位饼图区域

用OpenCV检测圆形轮廓(饼图通常是圆形):

import cv2  
import numpy as np  

image = cv2.imread("page1.png")  
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)  
blurred = cv2.GaussianBlur(gray, (9, 9), 2)  

# 霍夫圆检测  
circles = cv2.HoughCircles(blurred, cv2.HOUGH_GRADIENT, dp=1, minDist=50,  
                           param1=200, param2=30, minRadius=10, maxRadius=300)  

if circles is not None:  
    circles = np.uint16(np.around(circles))  
    for (x, y, r) in circles[0, :]:  
        cv2.circle(image, (x, y), r, (0, 255, 0), 3)  
    cv2.imwrite("detected_circle.png", image)

步骤3:扇形颜色分割

通过K-means聚类提取主要颜色,并计算扇形角度:

from sklearn.cluster import KMeans  

def extract_colors(img_path, n_colors=5):  
    img = cv2.imread(img_path)  
    img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)  
    pixels = img.reshape(-1, 3)  
    kmeans = KMeans(n_clusters=n_colors)  
    kmeans.fit(pixels)  
    return kmeans.cluster_centers_.astype(int)

步骤4:OCR识别标签

使用Tesseract识别扇形旁的文本:

import pytesseract  

text = pytesseract.image_to_string(image, config="--psm 6")  
print("提取的文本:", text)

4. 优化与挑战

  • 精度提升:若OCR识别不准,可训练自定义模型或调整预处理(如二值化)。
  • 动态PDF:若PDF含矢量图形,优先用PyMuPDF提取原始数据,而非图像处理。

5. 完整代码示例

整合上述步骤的完整脚本:

# 参考前文代码片段,按需组合流程  
# 此处省略重复部分,实际需补充逻辑衔接

通过这套方法,即使是扫描版PDF中的饼图,也能自动化提取数据。接下来,你可以将结果导入Pandas进行进一步分析,或可视化对比原始数据。

Python图像处理PDF解析饼图数据提取OCR
朗读
赞(0)
版权属于:

至尊技术网

本文链接:

https://www.zzwws.cn/archives/41785/(转载时请注明本文出处及文章链接)

评论 (0)
37,548 文章数
92 评论量

人生倒计时

今日已经过去小时
这周已经过去
本月已经过去
今年已经过去个月