从文档中提取结构化数据Documind

文摘   2024-11-22 11:20   湖北  

项目简介

Documind是一种先进的文档处理工具,利用人工智能从 PDF 中提取结构化数据。它旨在处理 PDF 转换、提取相关信息以及按照可自定义模式指定的格式设置结果。


这个存储库是建立在 Zerox 之上的 - https://github.com/getomni-ai/zerox 。Zerox 的 MIT 许可证包含在核心文件夹中,并且也在根许可证文件中提到。


特征

  • 将 PDF 转换为图像以进行详细的 AI 处理。

  • 使用 OpenAI 的 API 来提取和构建信息。

  • 允许用户指定各种文档格式的提取模式。

  • 专为在本地或云环境中灵活部署而设计。


尝试托管版本🚀

documind托管版本的演示即将推出供您试用!托管版本通过完全托管的 API 提供无缝体验,因此您可以跳过设置并立即开始提取数据。


要完全访问托管服务,请请求访问权限,我们将为您进行设置。


要求

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


系统依赖

  • Ghostscript : documind依赖 Ghostscript 来处理某些 PDF 操作。

  • GraphicsMagick :文档转换中的图像处理所需。


在继续之前,请在您的系统上安装两者:

# On macOSbrew install ghostscript graphicsmagick
# On Debian/Ubuntusudo apt-get updatesudo apt-get install -y ghostscript graphicsmagick

Node.js 和 NPM

确保您的系统上安装了 Node.js (v18+) 和 NPM。


安装

您可以通过 npm 安装documind :

npm install documind

环境设置

documind需要.env文件来存储敏感信息,例如您的 OpenAI API 密钥。

Create an .env file in your project directory and add the following:
在项目目录中创建一个.env文件并添加以下内容:

OPENAI_API_KEY=your_openai_api_key

用法

基本示例

首先,导入documind并定义您的架构。该架构概述了documind应在每个文档中查找哪些信息。这是一个快速入门的设置。


1. 定义模式

该架构是一个对象数组,其中每个对象定义:

  • name :要提取的字段名称。

  • type :数据类型(例如, "string" 、 "number" 、 "array" 、 "object" )。

  • 描述:字段的描述。

  • 子项(可选):对于数组和对象,定义嵌套字段。


银行对账单的示例架构:

const schema = [  {    name: "accountNumber",    type: "string",    description: "The account number of the bank statement."  },  {    name: "openingBalance",    type: "number",    description: "The opening balance of the account."  },  {    name: "transactions",    type: "array",    description: "List of transactions in the account.",    children: [      {        name: "date",        type: "string",        description: "Transaction date."      },      {        name: "creditAmount",        type: "number",        description: "Credit Amount of the transaction."      },      {        name: "debitAmount",        type: "number",        description: "Debit Amount of the transaction."      },      {        name: "description",        type: "string",        description: "Transaction description."      }    ]  },  {    name: "closingBalance",    type: "number",    description: "The closing balance of the account."  }];


2.运行documind

使用documind通过传递文件 URL 和架构来处理 PDF。

import { extract } from 'documind';
const runExtraction = async () => { const result = await extract({ file: 'https://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": "transfer to Tom"       },      {        "date": "2021-05-12",        "creditAmount": 50,        "debitAmount": null,        "description": "For lunch the other day"      },      {        "date": "2021-05-13",        "creditAmount": 20,        "debitAmount": null,        "description": "Refund for voucher"      },      {        "date": "2021-05-13",        "creditAmount": null,        "debitAmount": 750,        "description": "May's rent"      }    ],    "closingBalance": 2420  },  "fileName": "bank_statement.pdf"}

项目链接

http://github.com/DocumindHQ/documind

扫码加入技术交流群,备注开发语言-城市-昵称

合作请注明


 

关注「GitHubStore」公众号


GitHubStore
分享有意思的开源项目
 最新文章