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

新手求助:如何用Python实现多Excel/PDF文档信息汇总对比至单Excel?

从多份Excel/PDF提取信息并汇总对比的实现方案

当然可行,Python有大量成熟的第三方工具库,哪怕是新手也能一步步完成这个需求。下面是具体的着手步骤:

一、先装必要的工具库

直接用pip安装就行,这些库分别负责处理Excel、PDF:

  • pandas:核心的Excel读写和数据处理工具
  • openpyxl:支持读写xlsx格式的Excel文件
  • PyPDF2:提取PDF里的纯文本内容
  • pdfplumber:更精准地提取PDF中的表格数据
    安装命令:
pip install pandas openpyxl PyPDF2 pdfplumber

二、分模块实现功能

1. 读取并合并所有Excel文件

用pandas可以轻松读取Excel,还能给每条数据标记来源文件,方便后续对比:

import pandas as pd

def load_excel(file_path):
    # 读取Excel的第一个工作表,需要指定其他表的话改sheet_name参数
    df = pd.read_excel(file_path, sheet_name=0)
    # 添加来源文件列,方便溯源
    df['来源文件'] = file_path.split('/')[-1]
    return df

# 把你的Excel文件路径都放在这个列表里
excel_paths = ['文档1.xlsx', '文档2.xlsx']
# 批量读取所有Excel
excel_data_list = [load_excel(path) for path in excel_paths]
# 合并成一个总数据表
combined_excel = pd.concat(excel_data_list, ignore_index=True)

2. 提取PDF中的信息

PDF分两种情况:纯文本内容和表格内容,分别用不同的方法处理:

提取纯文本

from PyPDF2 import PdfReader

def load_pdf_text(file_path):
    reader = PdfReader(file_path)
    full_text = ''
    # 逐页提取文本
    for page in reader.pages:
        page_text = page.extract_text()
        if page_text:
            full_text += page_text + '\n'
    # 转成DataFrame格式,方便和Excel数据合并
    text_df = pd.DataFrame({'内容': [full_text], '来源文件': [file_path.split('/')[-1]]})
    return text_df

提取表格数据

如果PDF里有规整的表格,用pdfplumber更靠谱:

import pdfplumber

def load_pdf_table(file_path):
    table_list = []
    with pdfplumber.open(file_path) as pdf:
        for page in pdf.pages:
            # 提取当前页的表格
            table = page.extract_table()
            if table:
                # 把表格转成DataFrame,第一行作为表头
                table_df = pd.DataFrame(table[1:], columns=table[0])
                table_df['来源文件'] = file_path.split('/')[-1]
                table_list.append(table_df)
    # 合并所有页的表格数据
    return pd.concat(table_list, ignore_index=True) if table_list else pd.DataFrame()

注意:如果PDF是扫描件(图片格式),上面的方法没用,得加OCR工具(比如pytesseract),新手先从可复制的PDF入手。

3. 合并所有数据并对比异同

把Excel和PDF提取的数据合并后,根据你的需求做对比:

# 假设你已经有了combined_excel,以及多个PDF提取的dataframe(比如pdf_text_df、pdf_table_df)
all_data = [combined_excel, pdf_text_df, pdf_table_df]
total_data = pd.concat(all_data, ignore_index=True)

# 示例:按关键字段分组对比,比如以"产品ID"为关键字,看不同文件里的信息差异
compare_result = total_data.groupby('产品ID').agg({
    '产品名称': lambda x: ', '.join(set(x)),  # 展示不同文件里的产品名称差异
    '价格': lambda x: ', '.join(map(str, set(x))),  # 展示价格差异
    '来源文件': lambda x: ', '.join(x)  # 标记数据来自哪些文件
}).reset_index()

# 把对比结果导出到新的Excel
compare_result.to_excel('汇总对比结果.xlsx', index=False, engine='openpyxl')

4. 按需调整优化

  • 如果不同文档的字段名不统一(比如有的叫"产品名"有的叫"品名"),先统一字段名再合并
  • 要是需要对比文本内容的具体差异,可以用difflib库生成差异对比
  • 加个异常处理,比如文件不存在、格式错误时给出提示,避免程序崩溃

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 09:12:51