知识图谱06——将pdf中的表格(文字形式)保存至csv中

使用ubuntu22.04,anaconda

由于装环境装了一阵子,不确定装了哪些包了

可能的环境安装

bash 复制代码
conda install -c conda-forge pymupdf
conda install -c conda-forge camelot-py
conda install pandas
#或者
pip install PyMuPDF
pip install camelot-py[all]
pip install pandas

camelot-py 的安装可能需要其他依赖项,如 Tkinter 和 Ghostscript。在大多数情况下,它们应该在大多数 Linux 发行版和 macOS 中预安装。

bash 复制代码
# Tkinter
sudo apt-get install python3-tk  # Debian/Ubuntu
sudo yum install python3-tkinter  # CentOS/RHEL
# Ghostscript
sudo apt-get install ghostscript  # Debian/Ubuntu
sudo yum install ghostscript  # CentOS/RHEL

实现代码

python 复制代码
import fitz  # PyMuPDF
import camelot
import pandas as pd

# 路径到您的 PDF 文件
file_path = 'path_to_file.pdf'

# 打开 PDF 文件
doc = fitz.open(file_path)

# 存储包含表格的页面编号
table_pages = []

# 检查每个页面以确定是否包含表格
for page_num in range(len(doc)):
    print(f"Page {page_num} is finding.\n")
    page = doc.load_page(page_num)
    text = page.get_text("text")
    if "表格中关键文本" in text and "表格中关键文本" in text and "表格中关键文本" in text:  # 替换为检测表格的逻辑
        table_pages.append(page_num + 1)  # 页面编号是从 1 开始的

doc.close()

# 提取表格数据
all_tables = []
first_table = True  # 用于跟踪是否是第一个表格

for page_num in table_pages:
    print(f"Table {page_num} is getting.\nTotal table number is {len(table_pages)}.\n")
    # 提取指定页面的表格
    tables = camelot.read_pdf(file_path, pages=str(page_num), flavor='lattice')     # flavour='stream'为空白划分表格方式,flavor='lattice'为线条划分表格方式。
    for table in tables:		# 这里是针对重复的表格头设计的,舍弃了重复的表格头
        # 如果是第一个表格,保留标题
        if first_table:
            all_tables.append(table.df)
            first_table = False
        else:
            # 如果不是第一个表格,跳过标题行
            all_tables.append(table.df[1:])

# 是否提取到表格
if all_tables:          # 提取到表格
    # 合并所有提取的表格
    final_table = pd.concat(all_tables, ignore_index=True)

    # 导出到 CSV
    final_table.to_csv('path_to_file.csv', index=False)
    print("表格数据已提取并保存到 'path_to_file.csv'")

else:                   # 未提取到表格
    print("没有提取到任何表格数据")
相关推荐
海带紫菜菠萝汤14 小时前
企业批量PDF翻译方案:从选型到部署的完整指南
人工智能·算法·pdf
蓝创工坊Blue Foundry15 小时前
发票、凭证和对账单怎么整理成 Excel?先定义字段,再逐项复核
pdf·ocr·excel·文心一言·paddlepaddle
求真学习16 小时前
字节跳动Dolphin-v2:数字 PDF 拆开读、拍照文档整页读,自建拍照文档集平均编辑距离较原始 Dolphin降低约 91%
pdf·ocr·pdf解析·字节跳动·文档解析·dolphin-v2
CodexDave17 小时前
Python 自动化接单实战(四):PDF 批量提取先识别文本层还是扫描件
python·pdf·自动化·ocr·python自动化·文档处理·pdf提取
爱昏羔2 天前
上篇:从PDF到向量库 — 物流行业RAG系统的知识库构建全解析
python·langchain·pdf·agent·rag
AI导出鸭PC端2 天前
手机deepseek怎么导出pdf AI导出鸭
人工智能·pdf
蓝创工坊Blue Foundry3 天前
PaddleOCR 本地部署教程:小模型 OCR 如何完成字段提取到 Excel
pdf·自动化·ocr·excel·paddlepaddle·paddle
蓝创工坊Blue Foundry3 天前
个人藏书太多怎么整理?用 OCR 字段提取汇总成电子书目
pdf·ocr·excel·文心一言·paddlepaddle·paddle
蓝创工坊Blue Foundry4 天前
扫描件批量转 Excel:先确认要整表还原还是字段汇总
python·pdf·ocr·excel
审小匠OpenCPAi5 天前
审计票据与财报 PDF 怎么识别?通用 OCR、表格结构识别与多模态大模型的精度对比
pdf·ocr·审计