在此版本中,我們正在建立一個專為物流行業設計的工具。該工具將自動從電子郵件中的 PDF 附件(例如報價請求或運輸資訊表)中提取結構化數據,從而允許該數據在工作流程的其他地方使用。
為了讓事情更容易理解,讓我們以 Nova Logistics 為例——一家虛構的公司,專門在各個城市之間運輸易碎電子產品。
在 Nova Logistics,客戶透過電子郵件索取城市之間運輸物品的報價,他們通常會附上包含所有必要運輸詳細資訊的 PDF。目前,該流程是手動的:Nova 的人員必須打開每封電子郵件,下載隨附的 PDF,通讀它,並在計算運費之前提取關鍵信息,例如商品名稱和數量。
這可能需要幾個小時,尤其是每天有多封電子郵件,每封電子郵件都包含冗長的 PDF 文件。
在本文中,我們將逐步建立一個工具來自動化整個過程 - 從獲取電子郵件和提取 PDF 資料到將提取的資訊發送到 Google 表格。
要建立此工具,我們需要以下軟體包:
在開始寫程式碼之前,我們需要設定一些東西。不用擔心;我將指導您完成每一步。
我們將使用 Node.js 來執行我們的程式碼。如果您尚未安裝 Node.js,請前往 Node.js 網站並下載最新版本。
安裝 Node.js 後,我們需要安裝幫助我們與 Gmail、Google Sheets、Supabase 和 Documind 互動的軟體包。
透過執行以下命令為您的專案建立一個新資料夾:
初始化項目:
安裝所需的軟體包:
在我們開始編寫程式碼之前,您需要設定並取得所有憑證以使用 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 檔案來儲存程式碼中將使用的所有重要變數。這是一個例子:
我們將在程式碼中進一步介紹如何取得和使用這些變數。
我們將首先使用 Gmail API 來取得沒有「已處理」標籤且包含附件的電子郵件。
要檢索必要的存取令牌,我們將使用 Nango,它會在令牌過期時自動處理令牌刷新,因此您無需擔心自己管理令牌生命週期。
您需要的是:
您可以使用自己的 Gmail 帳戶直接透過 Nango UI 輕鬆新增連線。您可以在 Nango 儀表板的環境設定部分找到您的金鑰。
為了簡單起見,我們將一次將結果限制為五封電子郵件,並且我們將專門進行過濾以僅獲取帶有 PDF 附件的電子郵件。從這些中,我們將只檢索第一個附件進行處理。下載附件後,我們將透過套用標籤將電子郵件標記為已處理,確保在未來的輪詢週期中不會再次取得該電子郵件。
接下來,我們需要將下載的 PDF 上傳到 Supabase。確保將程式碼中的儲存桶名稱替換為您的儲存桶名稱。
將 PDF 儲存在 Supabase 後,我們將使用 Documind 提取相關資料。由於它利用 OpenAI 進行處理,因此請確保您的 API 金鑰已新增至 .env 檔案中。
Documind 使用您定義的模式來擷取您需要的結構化資料。我們將很快討論架構定義,但請隨時查看文件以獲取更多詳細資訊。
從 PDF 提取資料後,我們會將其發送到 Google 試算表。
繼續之前,請確保您的 Google 試算表已設置,並且您已透過 Nango 建立與您的帳戶的連接。如果您還沒有這樣做,這裡有一個您可以開始使用的模板。
現在我們已經寫好了各個函數,我們需要將所有內容組合在一起。
在此步驟中,我們將定義 Documind 將用於擷取所需資料的架構。此模式將指導 AI 識別和建立 PDF 中的相關資訊。
完整的原始程式碼可在 GitHub 上取得,以及用於測試的範例 PDF。但是,我們也歡迎您建立和使用自己的文件。只需克隆儲存庫,修改程式碼以滿足您的要求,然後針對您自己的用例進行嘗試。
以上是將非結構化電子郵件轉換為可操作的數據的詳細內容。更多資訊請關注PHP中文網其他相關文章!