Documind:开源 AI 文档处理工具,将 PDF 转换为图像提取结构化数据

202 阅读4分钟

❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日跟你分享最新的 AI 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦


🚀 快速阅读

  • 功能:将 PDF 转换为图像,使用 OpenAI API 提取和结构化信息。
  • 灵活性:支持本地或云环境部署,用户可自定义提取模式。
  • 应用场景:适用于财务审计、法律文档处理、医疗记录管理和保险索赔处理等多种场景。

正文(附运行示例)

Documind 是什么

documind.png

Documind 是一款开源的 AI 文档处理工具,用于从 PDF 文档中提取结构化数据。它通过将 PDF 文件转换为图像,利用 OpenAI API 进行信息提取,并根据用户定义的模式格式化输出结果。Documind 支持在本地或云环境中灵活部署,适用于多种文档格式的数据处理。

用户可以通过定义提取模式(schema),指定从文档中提取哪些信息。Documind 会根据这些模式从文档中提取相应数据,并将其格式化为结构化格式。

Documind 的主要功能

  • PDF 到图像的转换:将 PDF 文件转换为图像,以便进行更详细的 AI 处理。
  • 信息提取:利用 OpenAI 的 API 识别和提取 PDF 中的文本信息。
  • 自定义提取模式:用户定义特定的提取模式(schema),指定从文档中提取哪些信息。
  • 结果格式化:根据用户定义的模式,将提取的数据格式化为结构化格式。
  • 灵活部署:支持在本地或云环境中部署,适应不同的使用场景。

Documind 的技术原理

  • 光学字符识别(OCR):用 OCR 技术将 PDF 中的图像或扫描文档转换为机器可读的文本。
  • 自然语言处理(NLP):用 NLP 技术理解并分析文本内容,识别关键信息。
  • 机器学习:机器学习模型识别文档中的模式和结构,提高信息提取的准确性。
  • API 集成:集成 OpenAI 等第三方 API,利用先进的 AI 技术增强信息提取和处理能力。

如何运行 Documind

系统依赖

在使用 Documind 之前,请确保安装了以下软件依赖:

系统依赖
  • Ghostscript:Documind 依赖于 Ghostscript 处理某些 PDF 操作。
  • GraphicsMagick:用于文档转换中的图像处理。

安装方法:

# 在 macOS 上
brew install ghostscript graphicsmagick

# 在 Debian/Ubuntu 上
sudo apt-get update
sudo apt-get install -y ghostscript graphicsmagick
Node.js & NPM

确保系统已安装 Node.js (v18+) 和 NPM。

安装 Documind

通过 npm 安装 Documind:

npm install documind

环境设置

Documind 需要一个 .env 文件来存储敏感信息,如 OpenAI API 密钥。在项目目录中创建一个 .env 文件,并添加以下内容:

OPENAI_API_KEY=your_openai_api_key

使用示例

1. 定义模式

模式是一个对象数组,每个对象定义要提取的信息字段。

例如,银行对账单的模式:

const schema = [
  {
    name: "accountNumber",
    type: "string",
    description: "银行对账单的账户号码",
  },
  {
    name: "openingBalance",
    type: "number",
    description: "账户的初始余额",
  },
  {
    name: "transactions",
    type: "array",
    description: "账户中的交易列表",
    children: [
      {
        name: "date",
        type: "string",
        description: "交易日期",
      },
      {
        name: "creditAmount",
        type: "number",
        description: "交易的贷方金额",
      },
      {
        name: "debitAmount",
        type: "number",
        description: "交易的借方金额",
      },
      {
        name: "description",
        type: "string",
        description: "交易描述",
      },
    ],
  },
  {
    name: "closingBalance",
    type: "number",
    description: "账户的最终余额",
  },
];
2. 运行 Documind

使用 Documind 处理 PDF 文件:

import { extract } from "documind";

const runExtraction = async () => {
  const result = await extract({
    file: "https://example.com/bank_statement.pdf",
    schema,
  });

  console.log("Extracted Data:", result);
};

runExtraction();
示例输出

提取的结果可能如下所示:

{
  "success": true,
  "pages": 1,
  "data": {
    "accountNumber": "100002345",
    "openingBalance": 3200,
    "transactions": [
      {
        "date": "2021-05-12",
        "creditAmount": null,
        "debitAmount": 100,
        "description": "转账给 Tom"
      },
      {
        "date": "2021-05-12",
        "creditAmount": 50,
        "debitAmount": null,
        "description": "前几天的午餐"
      },
      {
        "date": "2021-05-13",
        "creditAmount": 20,
        "debitAmount": null,
        "description": "优惠券退款"
      },
      {
        "date": "2021-05-13",
        "creditAmount": null,
        "debitAmount": 750,
        "description": "5月房租"
      }
    ],
    "closingBalance": 2420
  },
  "fileName": "bank_statement.pdf"
}

资源


❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日跟你分享最新的 AI 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦