吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 225|回复: 1
收起左侧

[经验求助] 求助:使用pdfplumber转化pdf文件为txt时关于-“表格提取”-问题

[复制链接]
thinkerzhao 发表于 2024-8-11 17:00
50吾爱币
本人目前在批量处理企业年报pdf文件为txt格式,主要是为了提取年报中的表格数据,使用的是python的pdfplumber工具,遇到以下问题:

如上图是年报pdf中的一个截图,“分行业”这一行下的内容为“工业自动空值系统装置制造”,右面一列内容为“393,878,214.81”;现在转为的txt文件中转化结果为:
单位:元
营业收入比上 营业成本比上 毛利率比上年
营业收入 营业成本 毛利率
年同期增减 年同期增减 同期增减
分行业
工业自动控制 393,878,214. 206,300,153.
47.62% 16.55% 34.94% -7.14%
系统装置制造 81 42
###即“工业自动空值系统装置制造”和“393,878,214.81”被分为两行了。
请问应该如何避免上述情况呢?以下是我原处理代码示例,怎么修改下我的代码呢?
[Python] 纯文本查看 复制代码
import pdfplumber
import re

def merge_split_cells(table):
    merged_table = []
    for i, row in enumerate(table):
        if i == 0 or all(cell.strip() for cell in row if cell):
            merged_table.append(row)
        else:
            for j, cell in enumerate(row):
                if cell and cell.strip():
                    if len(merged_table) > 0:
                        if merged_table[-1][j] is None or merged_table[-1][j].strip() == '':
                            merged_table[-1][j] = cell
                        else:
                            merged_table[-1][j] += ' ' + cell
    return merged_table

def process_pdf(pdf_path, txt_path):
    with pdfplumber.open(pdf_path) as pdf:
        with open(txt_path, 'w', encoding='utf-8') as txt_file:
            for page in pdf.pages:
                text = page.extract_text()
                if text:
                    txt_file.write(text + '\n\n')

                # 处理表格
                for pdf_table in page.extract_tables():
                    merged_table = merge_split_cells(pdf_table)
                    for row in merged_table:
                        cleaned_row = [re.sub('\s+', ' ', cell).strip() if cell is not None else '' for cell in row]
                        txt_file.write(' '.join(cleaned_row) + '\n')
                    txt_file.write('\n')  # 表格之间添加空行

                txt_file.write('---------- 分割线 ----------\n\n')  # 页面之间的分隔线

pdf_path = 'D:/A股年报/新建文件夹/1219702294.PDF'
txt_path = 'D:/A股年报/新建文件夹/result.txt'
process_pdf(pdf_path, txt_path)

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

tutu2 发表于 2024-8-11 19:17
这个使用python还真不好处理   python对PDF的处理并不强  有些功能就比如这个表格  它就识别不到,应该是按照行处理的。
建议作者另辟蹊径,如果表格不太复杂的话可以转为excel  然后excel另存为txt就好了   批量转都有现成的工具,我比较长用的是我的ABC可以在论坛搜一下   转出来的效果还不错的
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-14 18:38

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表