weixin_42385928 2024-09-09 07:23 采纳率: 66.7%
浏览 17
已结题

征集Python提取PDF文字属性的代码

1.pdfplumber已经有了,不需要了
2.其他库和代码欢迎提出
3.补充:分析口径需要到每个文字、数字的所有属性,以按单个字为口径,列示所有的属性
4.理想的结果是输出这样的excel,见附图

img

  • 写回答

21条回答 默认 最新

  • 逆向-落叶 2024-09-09 13:12
    关注

    如果你已经排除了使用pdfplumber,那么可以考虑使用PyMuPDF(也称为fitz)这个库来提取PDF中的文字和属性信息。PyMuPDF提供了丰富的接口来处理PDF文件,包括获取文字的字体、大小、颜色等属性。

    首先,你需要安装PyMuPDF库,可以使用pip进行安装:

    pip install pymupdf
    

    以下是一个使用PyMuPDF提取PDF中文字及其属性,并将结果输出到Excel的基本示例代码:

    
    import fitz  # PyMuPDF
    import pandas as pd
    
    # 打开PDF文件
    pdf_path = 'your_pdf_file.pdf'
    pdf_document = fitz.open(pdf_path)
    
    # 创建一个空的DataFrame用于存储提取的数据
    df = pd.DataFrame(columns=['Text', 'Page', 'Font', 'FontSize', 'Color'])
    
    # 遍历PDF的每一页
    for page_num in range(len(pdf_document)):
        page = pdf_document[page_num]
        # 获取页面上的文字块
        text_blocks = page.get_text("blocks")
        
        # 遍历每个文字块
        for block in text_blocks:
            # 获取文字块的属性
            text = block[4]  # 文字内容
            rect = block[0]  # 文字块的位置和大小
            font = page.get_font(rect)  # 获取字体信息
            font_size = page.get_font_size(rect)  # 获取字体大小
            color = page.get_text_color(rect)  # 获取文字颜色
            
            # 将提取的信息添加到DataFrame中
            df = df.append({
                'Text': text,
                'Page': page_num + 1,
                'Font': font,
                'FontSize': font_size,
                'Color': color
            }, ignore_index=True)
    
    # 关闭PDF文档
    pdf_document.close()
    
    # 输出到Excel文件
    excel_path = 'output.xlsx'
    df.to_excel(excel_path, index=False)
    
    print(f"提取的数据已保存到 {excel_path}")
    

    请将your_pdf_file.pdf替换为你的PDF文件路径。这段代码会遍历PDF的每一页,提取每个文字块的内容及其属性,并将这些信息保存到一个Pandas DataFrame中。最后,DataFrame被输出到一个Excel文件。

    注意,PyMuPDF可能无法获取到所有PDF中的文字属性,特别是对于一些复杂的PDF格式,可能需要更复杂的处理逻辑。此外,上述代码中的get_text_color方法可能返回的是RGB元组,你可能需要根据需要进行格式转换。

    在运行代码之前,请确保你的环境中已经安装了pandas和openpyxl(用于写入Excel文件):

    
    pip install pandas openpyxl
    
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月9日
  • 修改了问题 9月9日
  • 修改了问题 9月9日
  • 赞助了问题酬金15元 9月9日
  • 展开全部

悬赏问题

  • ¥15 微信小程序 用oss下载 aliyun-oss-sdk-6.18.0.min client报错
  • ¥15 ArcGIS批量裁剪
  • ¥15 labview程序设计
  • ¥15 为什么在配置Linux系统的时候执行脚本总是出现E: Failed to fetch http:L/cn.archive.ubuntu.com
  • ¥15 Cloudreve保存用户组存储空间大小时报错
  • ¥15 伪标签为什么不能作为弱监督语义分割的结果?
  • ¥15 编一个判断一个区间范围内的数字的个位数的立方和是否等于其本身的程序在输入第1组数据后卡住了(语言-c语言)
  • ¥15 游戏盾如何溯源服务器真实ip?
  • ¥15 Mac版Fiddler Everywhere4.0.1提示强制更新
  • ¥15 android 集成sentry上报时报错。