在此版本中,我们正在构建一个专为物流行业设计的工具。该工具将自动从电子邮件中的 PDF 附件(例如报价请求或运输信息表)中提取结构化数据,从而允许该数据在工作流程的其他地方使用。
为了让事情更容易理解,让我们以 Nova Logistics 为例——一家虚构的公司,专门在各个城市之间运输易碎电子产品。
在 Nova Logistics,客户通过电子邮件索取城市之间运输物品的报价,他们通常会附上包含所有必要运输详细信息的 PDF。目前,该流程是手动的:Nova 的人员必须打开每封电子邮件,下载随附的 PDF,通读它,并在计算运费之前提取关键信息,例如商品名称和数量。
这可能需要几个小时,尤其是每天有多封电子邮件,每封电子邮件都包含冗长的 PDF 文档。
在本文中,我们将逐步构建一个工具来自动化整个过程 - 从获取电子邮件和提取 PDF 数据到将提取的信息发送到 Google 表格。
要构建此工具,我们需要以下软件包:
在开始编写代码之前,我们需要设置一些东西。不用担心;我将指导您完成每一步。
我们将使用 Node.js 来运行我们的代码。如果您尚未安装 Node.js,请前往 Node.js 网站并下载最新版本。
安装 Node.js 后,我们需要安装帮助我们与 Gmail、Google Sheets、Supabase 和 Documind 交互的软件包。
通过运行以下命令为您的项目创建一个新文件夹:
mkdir nova cd nova
初始化项目:
npm init -y
安装所需的软件包:
npm install googleapis @supabase/supabase-js documind dotenv @nangohq/node
在我们开始编写代码之前,您需要设置并获取所有凭据以使用 Google API(Gmail 和 Google Sheets)、Supabase 和 Documind。这是每个的快速指南:
Google API
由于我们也在使用 Google Sheets API,因此您只需完成第 6 步即可在 Nango 上创建另一个集成。搜索 Google Sheets 集成并使用您复制的相同客户端 ID 和密钥。在范围空间中,添加 https://www.googleapis.com/auth/spreadsheets
要发布您的应用程序,请转到 Google 控制台中的 OAuth 同意屏幕,然后单击“发布”按钮。
Supabase
现在让我们分步骤编写代码。
创建一个 .env 文件来存储代码中将使用的所有重要变量。这是一个例子:
mkdir nova cd nova
我们将在代码中进一步介绍如何获取和使用这些变量。
我们将首先使用 Gmail API 来获取没有“已处理”标签且包含附件的电子邮件。
要检索必要的访问令牌,我们将使用 Nango,它会在令牌过期时自动处理令牌刷新,因此您无需担心自己管理令牌生命周期。
您需要的是:
您可以使用自己的 Gmail 帐户直接通过 Nango UI 轻松添加新连接。您可以在 Nango 仪表板的环境设置部分找到您的密钥。
npm init -y
为了简单起见,我们将一次将结果限制为五封电子邮件,并且我们将专门进行过滤以仅获取带有 PDF 附件的电子邮件。从这些中,我们将仅检索第一个附件进行处理。下载附件后,我们将通过应用标签将电子邮件标记为已处理,确保在未来的轮询周期中不会再次获取该电子邮件。
接下来,我们需要将下载的 PDF 上传到 Supabase。确保将代码中的存储桶名称替换为您的存储桶名称。
npm install googleapis @supabase/supabase-js documind dotenv @nangohq/node
将 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>
从 PDF 中提取数据后,我们会将其发送到 Google 表格。
继续之前,请确保您的 Google 表格已设置,并且您已通过 Nango 创建与您的帐户的连接。如果您还没有这样做,这里有一个您可以开始使用的模板。
mkdir nova cd nova
现在我们已经编写了各个函数,我们需要将所有内容组合在一起。
在此步骤中,我们将定义 Documind 将用于提取所需数据的架构。该模式将指导 AI 识别和构建 PDF 中的相关信息。
npm init -y
完整的源代码可在 GitHub 上获取,以及用于测试的示例 PDF。但是,我们也欢迎您创建和使用自己的文档。只需克隆存储库,修改代码以满足您的要求,然后针对您自己的用例进行尝试。
以上是将非结构化电子邮件转化为可操作的数据的详细内容。更多信息请关注PHP中文网其他相关文章!