首页 > web前端 > js教程 > 将非结构化电子邮件转化为可操作的数据

将非结构化电子邮件转化为可操作的数据

DDD
发布: 2024-12-07 10:47:14
原创
993 人浏览过

Turn Unstructured Emails to Actionable Data

在此版本中,我们正在构建一个专为物流行业设计的工具。该工具将自动从电子邮件中的 PDF 附件(例如报价请求或运输信息表)中提取结构化数据,从而允许该数据在工作流程的其他地方使用。

为了让事情更容易理解,让我们以 Nova Logistics 为例——一家虚构的公司,专门在各个城市之间运输易碎电子产品。

在 Nova Logistics,客户通过电子邮件索取城市之间运输物品的报价,他们通常会附上包含所有必要运输详细信息的 PDF。目前,该流程是手动的:Nova 的人员必须打开每封电子邮件,下载随附的 PDF,通读它,并在计算运费之前提取关键信息,例如商品名称和数量。

这可能需要几个小时,尤其是每天有多封电子邮件,每封电子邮件都包含冗长的 PDF 文档。

在本文中,我们将逐步构建一个工具来自动化整个过程 - 从获取电子邮件和提取 PDF 数据到将提取的信息发送到 Google 表格。

它是如何运作的

  1. 投票电子邮件:首先,我们将建立一个系统来定期检查收件箱中的新电子邮件。找到电子邮件后,我们将下载 PDF 附件并向该电子邮件添加标签,以便将来不再对其进行轮询。
  2. 使用 Documind 提取数据:我们会将 PDF 作为 URL 传递给 Documind,这是一个使用 AI 从文档中提取结构化数据的开源包。这将为我们提供商品名称、数量、运输详细信息、重量等信息。
  3. 存储和使用数据:最后,我们会将提取的数据发送到Google 表格,以便于查看、跟踪和用于进一步计算。

我们需要什么

要构建此工具,我们需要以下软件包:

  • Gmail API:从收件箱获取电子邮件。
  • Supabase:上传和存储 PDF。
  • Documind:从 PDF 中提取结构化数据。
  • Google Sheets API:存储提取的数据并计算报价。
  • Nango:管理用户身份验证

第 1 步:初始设置

在开始编写代码之前,我们需要设置一些东西。不用担心;我将指导您完成每一步。

1.1 安装 Node.js

我们将使用 Node.js 来运行我们的代码。如果您尚未安装 Node.js,请前往 Node.js 网站并下载最新版本。

1.2 安装所需的库

安装 Node.js 后,我们需要安装帮助我们与 Gmail、Google Sheets、Supabase 和 Documind 交互的软件包。

  1. 打开终端命令提示符
  2. 通过运行以下命令为您的项目创建一个新文件夹:

    mkdir nova
    cd nova
    
    登录后复制
    登录后复制
    登录后复制
  3. 初始化项目:

    npm init -y
    
    登录后复制
    登录后复制
    登录后复制
  4. 安装所需的软件包:

    npm install googleapis @supabase/supabase-js documind dotenv @nangohq/node
    
    登录后复制
    登录后复制

1.3 获取 API 凭证

在我们开始编写代码之前,您需要设置并获取所有凭据以使用 Google API(Gmail 和 Google Sheets)、Supabase 和 Documind。这是每个的快速指南:

Google API

  1. 前往 Google Cloud Console。
  2. 从项目列表中,选择一个项目或创建一个新项目
  3. 为您的项目启用 Gmail API 和 Google Sheets API:
    • 转到 Cloud Console 中的 API 库并搜索“Gmail API”和“Google Sheets API”。单击每个并启用它们。
  4. 配置您的同意屏幕:
    • 转到 API 和服务 > OAuth 同意屏幕。
    • 为您的应用命名。
    • 选择“外部”作为您的受众类型。
    • 填写任何其他必填字段。
  5. 创建 OAuth 2.0 凭据:
    • 转到 API 和服务 >凭证。
    • 单击“创建凭据”并选择 OAuth 客户端 ID。
    • 选择“Web 应用程序”作为应用程序类型。
    • 复制您的客户端 ID 和密码。
  6. 为了跨多个平台轻松管理用户 OAuth,我使用 Nango。您可以查看他们的文档以了解如何开始:
    • 登录 Nango 并单击“配置新集成”。
    • 在集成列表中搜索 Google Mail。
    • 添加您复制的客户端 ID 和 Secret。
    • 在范围字段中,添加 https://www.googleapis.com/auth/gmail.readonly 、 https://www.googleapis.com/auth/gmail.modify 和 https://www.googleapis 。 com/auth/gmail.labels
    • 复制集成的回调 URL 并保存。
    • 返回 Google 控制台上的“凭据”并将回调 URL 添加为授权重定向 URI。

由于我们也在使用 Google Sheets API,因此您只需完成第 6 步即可在 Nango 上创建另一个集成。搜索 Google Sheets 集成并使用您复制的相同客户端 ID 和密钥。在范围空间中,添加 https://www.googleapis.com/auth/spreadsheets

要发布您的应用程序,请转到 Google 控制台中的 OAuth 同意屏幕,然后单击“发布”按钮。

Supabase

  1. 在 Supabase 注册免费帐户。
  2. 创建一个新的项目存储桶用于存储PDF。
  3. 从您的项目设置中获取 API URLAPI 密钥

第 2 步:编写代码

现在让我们分步骤编写代码。

2.1 添加环境变量

创建一个 .env 文件来存储代码中将使用的所有重要变量。这是一个例子:

mkdir nova
cd nova
登录后复制
登录后复制
登录后复制

我们将在代码中进一步介绍如何获取和使用这些变量。

2.2 设置 Gmail API 并获取电子邮件

我们将首先使用 Gmail API 来获取没有“已处理”标签且包含附件的电子邮件。

要检索必要的访问令牌,我们将使用 Nango,它会在令牌过期时自动处理令牌刷新,因此您无需担心自己管理令牌生命周期。

您需要的是:

  1. 来自 Nango 中 Gmail 设置的集成 ID
  2. 需要访问令牌的用户的连接 ID
  3. 您的Nango 密钥

您可以使用自己的 Gmail 帐户直接通过 Nango UI 轻松添加新连接。您可以在 Nango 仪表板的环境设置部分找到您的密钥。

npm init -y
登录后复制
登录后复制
登录后复制

为了简单起见,我们将一次将结果限制为五封电子邮件,并且我们将专门进行过滤以仅获取带有 PDF 附件的电子邮件。从这些中,我们将仅检索第一个附件进行处理。下载附件后,我们将通过应用标签将电子邮件标记为已处理,确保在未来的轮询周期中不会再次获取该电子邮件。

2.2 上传至Supabase

接下来,我们需要将下载的 PDF 上传到 Supabase。确保将代码中的存储桶名称替换为您的存储桶名称。

npm install googleapis @supabase/supabase-js documind dotenv @nangohq/node
登录后复制
登录后复制

2.3 使用Documind提取数据

将 PDF 存储在 Supabase 中后,我们将使用 Documind 提取相关数据。由于它利用 OpenAI 进行处理,因此请确保您的 API 密钥已添加到 .env 文件中。

Documind 使用您定义的模式来提取您需要的结构化数据。我们将很快讨论架构定义,但请随时查看文档以获取更多详细信息。

SUPABASE_API_KEY=<Supabase API Key>
SUPABASE_URL=<Supabase URL>
OPENAI_API_KEY=<Open AI API Key>
NANGO_KEY=<Nango secret key>
登录后复制

2.4 将提取的数据发送到Google表格

从 PDF 中提取数据后,我们会将其发送到 Google 表格。

继续之前,请确保您的 Google 表格已设置,并且您已通过 Nango 创建与您的帐户的连接。如果您还没有这样做,这里有一个您可以开始使用的模板。

mkdir nova
cd nova
登录后复制
登录后复制
登录后复制

第 3 步:将所有内容放在一起

现在我们已经编写了各个函数,我们需要将所有内容组合在一起。

在此步骤中,我们将定义 Documind 将用于提取所需数据的架构。该模式将指导 AI 识别和构建 PDF 中的相关信息。

npm init -y
登录后复制
登录后复制
登录后复制

测试代码

完整的源代码可在 GitHub 上获取,以及用于测试的示例 PDF。但是,我们也欢迎您创建和使用自己的文档。只需克隆存储库,修改代码以满足您的要求,然后针对您自己的用例进行尝试。

以上是将非结构化电子邮件转化为可操作的数据的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板