在此版本中,我们正在构建一个专为物流行业设计的工具。该工具将自动从电子邮件中的 PDF 附件(例如报价请求或运输信息表)中提取结构化数据,从而允许该数据在工作流程的其他地方使用。
为了让事情更容易理解,让我们以 Nova Logistics 为例——一家虚构的公司,专门在各个城市之间运输易碎电子产品。
在 Nova Logistics,客户通过电子邮件索取城市之间运输物品的报价,他们通常会附上包含所有必要运输详细信息的 PDF。目前,该流程是手动的:Nova 的人员必须打开每封电子邮件,下载随附的 PDF,通读它,并在计算运费之前提取关键信息,例如商品名称和数量。
这可能需要几个小时,尤其是每天有多封电子邮件,每封电子邮件都包含冗长的 PDF 文档。
在本文中,我们将逐步构建一个工具来自动化整个过程 - 从获取电子邮件和提取 PDF 数据到将提取的信息发送到 Google 表格。
它是如何运作的
- 投票电子邮件:首先,我们将建立一个系统来定期检查收件箱中的新电子邮件。找到电子邮件后,我们将下载 PDF 附件并向该电子邮件添加标签,以便将来不再对其进行轮询。
- 使用 Documind 提取数据:我们会将 PDF 作为 URL 传递给 Documind,这是一个使用 AI 从文档中提取结构化数据的开源包。这将为我们提供商品名称、数量、运输详细信息、重量等信息。
- 存储和使用数据:最后,我们会将提取的数据发送到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 交互的软件包。
- 打开终端或命令提示符。
-
通过运行以下命令为您的项目创建一个新文件夹:
mkdir nova cd nova
-
初始化项目:
npm init -y
-
安装所需的软件包:
npm install googleapis @supabase/supabase-js documind dotenv @nangohq/node
1.3 获取 API 凭证
在我们开始编写代码之前,您需要设置并获取所有凭据以使用 Google API(Gmail 和 Google Sheets)、Supabase 和 Documind。这是每个的快速指南:
Google API
- 前往 Google Cloud Console。
- 从项目列表中,选择一个项目或创建一个新项目
- 为您的项目启用 Gmail API 和 Google Sheets API:
- 转到 Cloud Console 中的 API 库并搜索“Gmail API”和“Google Sheets API”。单击每个并启用它们。
- 配置您的同意屏幕:
- 转到 API 和服务 > OAuth 同意屏幕。
- 为您的应用命名。
- 选择“外部”作为您的受众类型。
- 填写任何其他必填字段。
- 创建 OAuth 2.0 凭据:
- 转到 API 和服务 >凭证。
- 单击“创建凭据”并选择 OAuth 客户端 ID。
- 选择“Web 应用程序”作为应用程序类型。
- 复制您的客户端 ID 和密码。
- 为了跨多个平台轻松管理用户 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
- 在 Supabase 注册免费帐户。
- 创建一个新的项目和存储桶用于存储PDF。
- 从您的项目设置中获取 API URL 和 API 密钥。
第 2 步:编写代码
现在让我们分步骤编写代码。
2.1 添加环境变量
创建一个 .env 文件来存储代码中将使用的所有重要变量。这是一个例子:
mkdir nova cd nova
我们将在代码中进一步介绍如何获取和使用这些变量。
2.2 设置 Gmail API 并获取电子邮件
我们将首先使用 Gmail API 来获取没有“已处理”标签且包含附件的电子邮件。
要检索必要的访问令牌,我们将使用 Nango,它会在令牌过期时自动处理令牌刷新,因此您无需担心自己管理令牌生命周期。
您需要的是:
- 来自 Nango 中 Gmail 设置的集成 ID。
- 需要访问令牌的用户的连接 ID。
- 您的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> </nango></open></supabase></supabase>
2.4 将提取的数据发送到Google表格
从 PDF 中提取数据后,我们会将其发送到 Google 表格。
继续之前,请确保您的 Google 表格已设置,并且您已通过 Nango 创建与您的帐户的连接。如果您还没有这样做,这里有一个您可以开始使用的模板。
mkdir nova cd nova
第 3 步:将所有内容放在一起
现在我们已经编写了各个函数,我们需要将所有内容组合在一起。
在此步骤中,我们将定义 Documind 将用于提取所需数据的架构。该模式将指导 AI 识别和构建 PDF 中的相关信息。
npm init -y
测试代码
完整的源代码可在 GitHub 上获取,以及用于测试的示例 PDF。但是,我们也欢迎您创建和使用自己的文档。只需克隆存储库,修改代码以满足您的要求,然后针对您自己的用例进行尝试。
以上是将非结构化电子邮件转化为可操作的数据的详细内容。更多信息请关注PHP中文网其他相关文章!

JavaScript字符串替换方法详解及常见问题解答 本文将探讨两种在JavaScript中替换字符串字符的方法:在JavaScript代码内部替换和在网页HTML内部替换。 在JavaScript代码内部替换字符串 最直接的方法是使用replace()方法: str = str.replace("find","replace"); 该方法仅替换第一个匹配项。要替换所有匹配项,需使用正则表达式并添加全局标志g: str = str.replace(/fi

本教程向您展示了如何将自定义的Google搜索API集成到您的博客或网站中,提供了比标准WordPress主题搜索功能更精致的搜索体验。 令人惊讶的是简单!您将能够将搜索限制为Y

因此,在这里,您准备好了解所有称为Ajax的东西。但是,到底是什么? AJAX一词是指用于创建动态,交互式Web内容的一系列宽松的技术。 Ajax一词,最初由Jesse J创造

本文系列在2017年中期进行了最新信息和新示例。 在此JSON示例中,我们将研究如何使用JSON格式将简单值存储在文件中。 使用键值对符号,我们可以存储任何类型的

利用轻松的网页布局:8个基本插件 jQuery大大简化了网页布局。 本文重点介绍了简化该过程的八个功能强大的JQuery插件,对于手动网站创建特别有用

核心要点 JavaScript 中的 this 通常指代“拥有”该方法的对象,但具体取决于函数的调用方式。 没有当前对象时,this 指代全局对象。在 Web 浏览器中,它由 window 表示。 调用函数时,this 保持全局对象;但调用对象构造函数或其任何方法时,this 指代对象的实例。 可以使用 call()、apply() 和 bind() 等方法更改 this 的上下文。这些方法使用给定的 this 值和参数调用函数。 JavaScript 是一门优秀的编程语言。几年前,这句话可

jQuery是一个很棒的JavaScript框架。但是,与任何图书馆一样,有时有必要在引擎盖下发现发生了什么。也许是因为您正在追踪一个错误,或者只是对jQuery如何实现特定UI感到好奇

该帖子编写了有用的作弊表,参考指南,快速食谱以及用于Android,BlackBerry和iPhone应用程序开发的代码片段。 没有开发人员应该没有他们! 触摸手势参考指南(PDF) Desig的宝贵资源


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

Dreamweaver Mac版
视觉化网页开发工具

记事本++7.3.1
好用且免费的代码编辑器

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器