首頁 > web前端 > js教程 > 將非結構化電子郵件轉換為可操作的數據

將非結構化電子郵件轉換為可操作的數據

DDD
發布: 2024-12-07 10:47:14
原創
1009 人瀏覽過

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. 透過執行以下命令為您的專案建立一個新資料夾:

  3. 初始化項目:

  4. 安裝所需的軟體包:

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 檔案來儲存程式碼中將使用的所有重要變數。這是一個例子:

我們將在程式碼中進一步介紹如何取得和使用這些變數。

2.2 設定 Gmail API 並取得電子郵件

我們將首先使用 Gmail API 來取得沒有「已處理」標籤且包含附件的電子郵件。

要檢索必要的存取令牌,我們將使用 Nango,它會在令牌過期時自動處理令牌刷新,因此您無需擔心自己管理令牌生命週期。

您需要的是:

  1. 來自 Nango 中 Gmail 設定的整合 ID
  2. 需要存取令牌的使用者的連線 ID
  3. 您的Nango 金鑰

您可以使用自己的 Gmail 帳戶直接透過 Nango UI 輕鬆新增連線。您可以在 Nango 儀表板的環境設定部分找到您的金鑰。

為了簡單起見,我們將一次將結果限制為五封電子郵件,並且我們將專門進行過濾以僅獲取帶有 PDF 附件的電子郵件。從這些中,我們將只檢索第一個附件進行處理。下載附件後,我們將透過套用標籤將電子郵件標記為已處理,確保在未來的輪詢週期中不會再次取得該電子郵件。

2.2 上傳至Supabase

接下來,我們需要將下載的 PDF 上傳到 Supabase。確保將程式碼中的儲存桶名稱替換為您的儲存桶名稱。

2.3 使用Documind擷取資料

將 PDF 儲存在 Supabase 後,我們將使用 Documind 提取相關資料。由於它利用 OpenAI 進行處理,因此請確保您的 API 金鑰已新增至 .env 檔案中。

Documind 使用您定義的模式來擷取您需要的結構化資料。我們將很快討論架構定義,但請隨時查看文件以獲取更多詳細資訊。

2.4 將擷取的資料傳送到Google表格

從 PDF 提取資料後,我們會將其發送到 Google 試算表。

繼續之前,請確保您的 Google 試算表已設置,並且您已透過 Nango 建立與您的帳戶的連接。如果您還沒有這樣做,這裡有一個您可以開始使用的模板。

第 3 步:將所有內容放在一起

現在我們已經寫好了各個函數,我們需要將所有內容組合在一起。

在此步驟中,我們將定義 Documind 將用於擷取所需資料的架構。此模式將指導 AI 識別和建立 PDF 中的相關資訊。

測試程式碼

完整的原始程式碼可在 GitHub 上取得,以及用於測試的範例 PDF。但是,我們也歡迎您建立和使用自己的文件。只需克隆儲存庫,修改程式碼以滿足您的要求,然後針對您自己的用例進行嘗試。

以上是將非結構化電子郵件轉換為可操作的數據的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板