• 使用pdfplumber提取pdf中的文字


    一、安装 pdfplumber

    pdfplumber 是一个 Python 库,必须通过 pip 安装才能在 Python 代码中进行使用。使用以下命令在 Python 中安装 pdfplumber。

    pip install pdfplumber
    
    • 1

    二、用 pdfplumber 打开 PDF 文档

    在 Python 中使用 pdfplumber 打开 PDF 文档的方法非常简单。只需要调用 pdfplumber 的 open 方法并传递 PDF 文件的路径。

    import pdfplumber
    with pdfplumber.open("example.pdf") as pdf:
      # do something with pdf
    
    • 1
    • 2
    • 3

    三、提取文本

    使用 pdfplumber 可以很容易地提取文档中的文本内容。对于一个页面,你可以使用 extract_text() 方法来提取页面上的文本。

    with pdfplumber.open("example.pdf") as pdf:
      for i, page in enumerate(pdf.pages):
        text = page.extract_text()
        print(f"This is the text on page {i}:")
        print(text)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    使用 extract_text() 方法会返回一个字符串,其中包含页面中的所有文本。如果你只想提取页面的一部分文本,可以将提取的区域作为参数传递给 extract_text() 方法。

    四、提取表格

    如果 PDF 文档中包含表格,则可以使用 pdfplumber 将表格提取为 Pandas DataFrame 对象,并对其进行进一步处理。

    首先,我们需要用 extract_tables() 方法来提取所有表格。

    with pdfplumber.open("example.pdf") as pdf:
      for i, page in enumerate(pdf.pages):
        tables = page.extract_tables()
        for table in tables:
          df = pd.DataFrame(table[1:], columns=table[0])
          print("This is a table on page ",i)
          print(df.head())
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    extract_tables() 方法将返回一个列表,其中包含每个表格的列表,每个表格都是一个嵌套列表。在将表格转换为 DataFrame 之前,请确保在第一行包含表头。

    五、转换为图像

    在某些情况下,你可能需要将 PDF 页面转换为图像格式,例如 PNG 或 JPEG。使用 pdfplumber 可以很容易地实现这一点。

    首先,我们需要使用 Page 对象的 render() 方法将页面渲染为图像。

    with pdfplumber.open("example.pdf") as pdf:
      for i, page in enumerate(pdf.pages):
        im = page.to_image(resolution=150)
        im.save("page-{}.png".format(i), format="png")
    
    • 1
    • 2
    • 3
    • 4

    render() 方法将返回一个 PageImage 对象,你可以使用该对象的 save() 方法将图像保存到文件。在 save() 方法中指定文件名和所需的图像格式。

  • 相关阅读:
    mac苹果电脑有什么免费的系统清理软件?
    数据挖掘与分析课程笔记(Chapter 21)
    多路转接(上)——select
    后期学习计划
    react是否支持给标签设置自定义的属性,比如给video标签设置webkit-playsinline?
    scala(day01)
    数据结构——二叉搜索树的实现、删除(最大值和最小值、最大值和最小值)
    从零开始学习 Java:简单易懂的入门指南之Map集合(二十三)
    Docker 安装MySQL(主从复制)
    C++中std::enable_if和SFINAE介绍
  • 原文地址:https://blog.csdn.net/m0_37134868/article/details/132977340