Pdf文件中有多个表格,希望批量提取出来:
在ChatGPT中输入提示词:
你是一个Python编程专家,任务是提取pdf文件中的表格,具体步骤如下:
读取PDF文件:"F:AI自媒体内容AI炒股已经阅读20240612-海通国际-中国互联网:“人工智能 ”引爆新质生产力革命.pdf"
用camelot-py库提取63页到68页中所有的表格内容,
表格内容保存到excel文件中,excel文件保存在F盘,文件名为:AI融资2024.xlsx
注意:每一步都要输出信息到屏幕上
ChatGPT的回复:
PDF文件中的表格内容提取是一个比较复杂的问题,尤其是在涉及表格格式和排版时。PDF并不是为结构化数据设计的,因此在提取表格数据时,可能会丢失一些原始的格式信息。为了解决表格提取后数据混乱的问题,我们可以考虑使用更专业的PDF表格提取工具,例如tabula-py或camelot-py,它们专门用于从PDF中提取表格并能更好地保留原始排版信息。
下面是如何使用camelot-py库来提取PDF表格并保存到Excel文件中的步骤:
- 安装camelot-py 在开始之前,需要安装camelot-py库。camelot-py要求系统中安装有Ghostscript。请确保你已经安装了这些依赖项。可以使用以下命令安装camelot-py: bash 复制代码 pip install camelot-py 你还需要安装Ghostscript。在Windows系统中,可以从Ghostscript官方页面下载安装包。
- 使用camelot提取表格 以下是使用camelot从指定页码提取表格并将其保存到Excel文件中的代码示例: import camelot import pandas as pd # 设置文件路径和其他参数 pdf_file_path = r"F:AI自媒体内容AI炒股已经阅读20240612-海通国际-中国互联网:“人工智能 ”引爆新质生产力革命.pdf" excel_output_path = r"F:AI融资2024.xlsx" pages = "63-68" # 提取PDF中的表格 try: tables = camelot.read_pdf(pdf_file_path, pages=pages, flavor='stream') print(f"在第 {pages} 页中检测到 {len(tables)} 个表格。") except Exception as e: print(f"无法提取表格: {e}") exit() # 保存表格数据到Excel with pd.ExcelWriter(excel_output_path, engine='openpyxl') as writer: for i, table in enumerate(tables): df = table.df sheet_name = f"Table_{i 1}" df.to_excel(writer, sheet_name=sheet_name, index=False, header=False) print(f"表格 {i 1} 已保存到 Excel 的 {sheet_name} 工作表中。") print(f"所有表格内容已保存到 Excel 文件: {excel_output_path}")
- 代码解释 camelot.read_pdf(): camelot.read_pdf()方法用于从PDF中读取表格。参数flavor='stream'适用于有明确行列边界的表格。可以使用flavor='lattice'来处理带有网格线的表格。选择不同的flavor会影响表格的检测和提取结果。 页码设置: 通过设置pages="63-68"参数来指定要提取的页码范围。 保存到Excel: 使用pandas的ExcelWriter将每个提取的表格保存到Excel文件中,并使用不同的工作表名来区分。 输出信息: 在每一步中加入print语句,确保用户了解进展情况。
- 注意事项
表格检测: camelot在处理复杂格式的表格时可能仍然会出现检测不到或数据错位的情况。如果结果不理想,可以尝试调整camelot.read_pdf()的参数,如flavor、line_scale等,以提高表格检测精度。
PDF格式: 如果PDF中的表格布局非常复杂或嵌入的图形较多,可能需要手动调整提取策略,或使用其他专业的PDF处理工具。
检查输出: 运行脚本后,请检查输出的Excel文件,以确保表格数据的准确性和完整性。
通过使用camelot-py,应该可以更好地提取和保留PDF表格的原始排版和结构。尝试运行此代码,并查看输出结果如何。如果有其他问题或需求,可以进一步讨论。
程序运行结果: