pdfminer解析PDF出现cid字符及其解决方案

内容分享1周前发布
0 0 0

背景:

想使用pdfminer的python库来读取工商银行的2023年财报信息,但是发现读取完后出现如下提示信息:

Ignoring (part of) ToUnicode map because the PDF data does not conform to the format. This could result in (cid) values in the output. The start object is not a byte.
Ignoring (part of) ToUnicode map because the PDF data does not conform to the format. This could result in (cid) values in the output. The start object is not a byte.

并且解析出来的文本会出现类似(cid:14033)样式的字符。

公司简介 

中国工商银行成立于 1984  1  1 日。2005  10  28 日,本行整体改制

为(cid:14033)份有限公司。2006  10  27 日,本行成功在上交所和香港(cid:13956)交所同日挂

牌上市。 

本行致力于建设中国特色世界一流现代金融企业,拥有优质的客户基础、多

元的业务结构、强劲的创新能力和市场竞争力。本行(cid:4662)服务作为立行之本,坚持

解决办法:

1、尝试更新Libsite-packagespdfminercmap下的一些字体库

从github下载对应的库,更新到本地的Libsite-packagespdfminercmap

https://github.com/euske/pdfminer/tree/2103e5875ef04cfaf424b25d2fd0dc9535a90714/pdfminer/cmap

验证结果,不起作用

2、切换其他的pdf库

切换到PyMuPDF库进行解析,发现问题解析。且对文件读取速度大大快于pdfminer。

整体代码如下:

import fitz  # PyMuPDF

def extract_text_with_pymupdf(pdf_path):
    document = fitz.open(pdf_path)
    text = []
    for page_num in range(len(document)):
        page = document.load_page(page_num)


        page_text = page.get_text()
        lines = page_text.splitlines()
        non_blank_lines = [line for line in lines if line.strip() != ""]

        # Join the non-blank lines back into a single string
        text.append("".join(non_blank_lines))
    return text

pdf_path = "工商银行2023年财报.pdf"
text = extract_text_with_pymupdf(pdf_path)
for t in text:
    print(t)

提取后输出的结果为:

中国工商银行股份有限公司 (股票代码:601398) 2023 年度报告 
中国工商银行股份有限公司2023 年度报告(A 股) 1 公司简介 中国工商银行成立于1984 年1 月1 日。2005 年10 月28 日,本行整体改制为股份有限公司。2006 年10 月27 日,本行成功在上交所和香港联交所同日挂牌上市。 本行致力于建设中国特色世界一流现代金融企业,拥有优质的客户基础、多元的业务结构、强劲的创新能力和市场竞争力。本行将服务作为立行之本,坚持以服务创造价值,向全球超1,205 万对公客户和7.40 亿个人客户提供丰富的金融产品和优质的金融服务,以自身高质量发展服务经济社会高质量发展。本行自觉将社会责任融入发展战略和经营管理活动,在服务制造业、发展普惠金融、支持乡村振兴、发展绿色金融、支持公益事业等方面受到广泛赞誉。 本行始终聚焦主业,坚持服务实体经济的本源,与实体经济共荣共存、共担风雨、共同成长;始终坚持风险为本,牢牢守住底线,不断提高控制和化解风险的能力;始终坚持对商业银行经营规律的把握与遵循,致力于成为基业长青的银行;始终坚持稳中求进、创新求进,持续深化重点发展战略,积极发展金融科技,加快数字化转型;始终坚持专业专注,开拓专业化经营模式,锻造“大行工匠”。 本行连续十一年位列英国《银行家》全球银行1000 强榜单榜首和美国《财富》500 强榜单全球商业银行首位,连续八年位列英国Brand Finance 全球银行品牌价值500 强榜单榜首。

启发:

在使用一个库无法达到我们目的时,切换到另外一个库是最快的解决方式。

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
none
暂无评论...