如果公司到現在仍然靠人手把供應商發票逐張打入試算表,軟件可以省去大部分打字工夫。抽取工具——無論是讀取數碼 PDF,還是為掃描件做 OCR——能減少重新輸入,但它們產生的數值,在任何東西入賬之前仍然需要核對。「讀取」和「核對」是兩件事。
這篇文章講的是香港中小企辦公室如何把 PDF 發票資料轉入 Excel:軟件實際上怎樣讀一張發票、一個連核對步驟的示範例子、一個值得知道的試算表公式陷阱,以及一套你這星期就可以落實的流程。這是一份作業流程指引,不是會計或法律意見。
軟件怎樣讀一張發票
情況分兩種,需要的工具也不同。
文字型(原生數碼)PDF。 發票由電腦產生,文字本身已經在檔案裡。Excel 可以用 取得資料 ▸ 從檔案 ▸ 從 PDF 直接抽出表格,做法見 Microsoft 的 Power Query PDF 連接器說明文件。它會開啟一個「導覽器」視窗,你選擇要匯入的表格,然後載入或轉換。有兩點要有心理準備:這個功能是否可用會因 Excel 版本和平台而不同;而當發票的貨品說明佔多行時,匯入後的列往往會錯位,需要整理。
掃描或影相的發票。 這時「發票」只是一張圖片。軟件必須先做 OCR(光學文字辨識)把像素轉成文字。清晰、平正、完整一頁的圖像會有幫助;歪斜、淡色或對比度低的文字、蓋在數字上的公司印章、手寫批註,都可能令字元辨識的可靠程度下降。質素差的輸入不一定產生錯誤結果,但不確定的欄位仍要與原件核對。
結構化(AI)抽取 在以上兩種情況之上再加一層。它不是給你一個粗略表格,而是回傳有標籤的欄位——發票號碼、發票日期、供應商、小計、稅額、總額——以及一張貨品明細清單。Microsoft 的發票處理預建模型說明文件 可作參考,看這類工具會抽取甚麼:表頭欄位加上貨品明細,並會為欄位附上一個信心分數。該文件亦提到它接受繁體中文(香港)發票,並建議使用清晰的掃描。請把信心分數當作「這個欄位要人手看一看」的提示,而不是「這個數值一定正確」的保證。
示範例子:一張發票,六項核對
示範例子(非真實客戶資料)。
收到一張 PDF 供應商發票:
手機上可左右滑動查看整張表。
| 欄位 | 內容 |
|---|---|
| 供應商 | 九龍包裝用品 |
| 發票號碼 | KPS-24188 |
| 發票日期 | 2026-08-14 |
| 付款條件 | 發票日起 30 日內付款(Net 30) |
| 到期日 | 2026-09-13 |
| 貨幣 | 港元 |
手機上可左右滑動查看整張表。
| 項目 | 數量 | 單價(HK$) | 小計(HK$) |
|---|---|---|---|
| 紙箱(大) | 20 | 12.50 | 250.00 |
| 氣泡膜(卷) | 6 | 85.00 | 510.00 |
| 易碎標籤 | 100 | 0.40 | 40.00 |
| 小計 | 800.00 | ||
| 送貨費 | 60.00 | ||
| 發票總額 | 860.00 |
在這個總額接觸你的帳目之前,先做六項核對:
- 可能重複? 這張供應商的發票號碼 KPS-24188 是否已經在試算表內——或者另一個號碼,但供應商、日期、金額都相同?把相符視為要調查的疑點,而不是已確認的重複:拒絕任何一張之前,先比對兩份來源文件。
- 它真的是發票,而且與來源對得上嗎? 不是貸項通知單(credit note)、不是月結單、不是形式發票(pro-forma),也不是附了價錢的送貨單——各有不同處理方式。把你那一列的供應商名稱、發票號碼和發票日期,逐字對回眼前的 PDF。
- 明細加得到總額嗎? 20 × 12.50 = 250.00;6 × 85.00 = 510.00;100 × 0.40 = 40.00。小計 250.00 + 510.00 + 40.00 = 800.00。加送貨費 60.00 → 860.00。與列明的總額對得上。如果對不上,停。
- 貨幣有沒有寫明? 抽取只給你數字
860,你那一列應該寫HKD 860.00。如果你以其他貨幣入賬,記下所用的匯率和日期。 - 有沒有危險的儲存格內容? 見下一節。
- 有沒有人批核? 在該列旁邊寫上姓名和日期。
試算表陷阱:會被當成公式執行的儲存格
當抽取出來的文字落在一個以 =、+、- 或 @ 開頭的儲存格,試算表可能在檔案一打開的時候就把它當成公式。像 =REF/2026 這樣的供應商參考編號,或者有人貼進去的一段附註,就變成可執行的內容。這叫做 CSV 注入(CSV injection)或公式注入,OWASP 關於 CSV 注入的說明 解釋了一個匯出了不受信任數值的檔案,如何反過來對付打開它的人。
當你把抽取結果由 CSV 帶進 Excel,實務上的防範:用「取得資料/從文字/CSV」,並在匯入步驟中,把每一個不受信任的文字欄(供應商名稱、參考編號、貨品說明、附註)在載入之前設為 文字 資料類型。然後另做一步,把金額欄和日期欄核對並轉換成數字和日期。單靠匯入並不安全——像 =1+1 這樣的值仍然要攔截——而 OWASP 指出,日後儲存或重新開啟檔案可能令問題再次浮現,所以匯出後要再檢查。不要倚賴單一招「在前面加個引號」;OWASP 明確指出,沒有任何一個消毒步驟在每一個試算表程式裡都安全。如果資料會進入其他人會打開的試算表,這一項核對不是選做,是必做。
處理麻煩的文件
貸項通知單。 貸項通知單是減少你的應付款。不要把它當成另一張正數帳單輸入。在暫存表裡,用一個獨立項目記錄它,連結到它更正的那張發票,令表內與該供應商的滾存餘額反映到它。到正式入賬時,用你會計系統本身的貸項通知單流程,而不是人手打一條負數。
多貨幣。 按抽取結果記下發票貨幣。如果你的帳以港元計,加上換算匯率和日期——不要讓任何人日後靠估。
長篇或多頁發票。 原生數碼的表格可以逐頁抽取。當貨品說明換到第二行,預期要整理——Microsoft 的 PDF 連接器說明文件 就針對這種情況,指向「向下填滿」和「群組」步驟。
低信心欄位。 如果工具把總額、某個日期或某個數量標示為不確定,在它繼續之前,把那個欄位與圖片對一對。信心分數就是用來做這件事的。
一套你這星期就可以落實的流程
- 分類收件匣。 把收到的發票分成原生數碼 PDF 和掃描/相片。
- 抽取。 原生數碼:Excel 取得資料 ▸ 從 PDF,或結構化抽取工具。掃描:先做 OCR 或結構化抽取工具。
- 先落入暫存表,絕不直接入總帳。
- 做六項核對。 任何一項不通過,就進入「待查」清單,不入帳。
- 批核並存檔。 由指名的人簽核;該列移入總帳;保留原本的 PDF 或掃描,讓任何一筆入賬日後都可以核對。
一個項目可以把前四步串連起來——抽取、重複核對、暫存表自動運作——只留下覆核和批核給人做。這是描述這樣一套流程「可以」做甚麼,不是說有一個已經連上你帳目的產品。
如果你想有人替你的發票流程把關,我們關於如何在香港開發票的文章講的是開單那一邊,而值得自動化的小生意工作清單可以把這件事放進脈絡。準備好的時候,告訴我們今天的發票是怎樣收進來的,我們會指出哪裡適合自動化、哪裡不適合。
常見問題
Excel 可以直接打開 PDF 發票嗎? Excel 可以透過「取得資料 ▸ 從檔案 ▸ 從 PDF」匯入文字型 PDF 裡的表格,見 Microsoft 的 PDF 連接器說明文件。是否可用取決於你的 Excel 版本和平台,而掃描發票需要先做 OCR。
AI 抽取準到可以不用核對嗎? 不可以。信心分數(如 Microsoft 的發票模型說明文件 所描述)告訴你要看哪裡——它不是「數值正確」的承諾。永遠要把貨品明細加總對回總額,並檢查是否重複。
公司印章、蓋章和手寫附註呢? 它們可能令附近或底下的文字,OCR 讀取的可靠程度下降。把受影響的欄位與圖片對一對,凡是讀取看來不確定的,就人手輸入。
輸入之後還要保留原本的 PDF 嗎? 要。保留來源文件,而不只是試算表那一列,讓任何一筆入賬都可以追溯,並由沒有參與打字的人覆核。
