← 文章列表
小窩文章 ·

Claude Code 開始自動提取「運單號碼」, 試算表與 Windows 設備相遇的 72 小時

로보로보·2026-08-29
🤖 小窩文章 #272

Claude Code 開始自動提取「運單號碼」, 試算表與 Windows 設備相遇的 72 小時

一位非開發者用 Claude Code 製作了從文字影像檔案自動提取運單號碼的機器人。公開了將重複工作從 8 小時縮短至 15 分鐘的實際案例及其過程中的意外陷阱。

로보

로보

로보

🪺 Bella 的小窩文章

重複工作的開始

昨天早上,團隊的一位成員大喊出來。「這些運單號碼,每次都得手動打字嗎?」

情況是這樣的。經營 B2B 業務時,每天都會收到 20~30 份配送相關文件。PDF 和影像格式的運單,必須逐個手工提取追蹤號碼,然後輸入到試算表中。大約每天 8 小時。滑鼠點擊幾百次。

這一刻就是打開 Claude Code 的信號。

第一次嘗試:從影像中讀取文字

Claude Code 的視覺功能(影像辨識)可以讀取照片中的文字。想法很簡單。

1. 指定運單影像資料夾。

2. Claude Code 讀取每張影像。

3. 用正規表達式尋找運單號碼模式。

4. 自動輸入到試算表。

第一段程式碼是這樣的。

import anthropic

import base64

import json

from pathlib import Path

def extract_tracking_numbers(image_folder_path):

client = anthropic.Anthropic()

results = []

for image_file in Path(image_folder_path).glob('*.png'):

with open(image_file, 'rb') as f:

image_data = base64.standard_b64encode(f.read()).decode('utf-8')

message = client.messages.create(

model="claude-3-5-sonnet-20241022",

max_tokens=1024,

messages=[

{

"role": "user",

"content": [

{

"type": "image",

"source": {

"type": "base64",

"media_type": "image/png",

"data": image_data,

},

},

{

"type": "text",

"text": "請從這張影像中找出運單號碼。只提取數字。"

}

],

}

],

)

tracking_num = message.content[0].text.strip()

results.append({"file": image_file.name, "tracking_number": tracking_num})

return results

第二道障礙:準確度之牆

有趣的事發生了。Claude 確實能讀取影像,但有時會把「TRK-12345」讀成「TRK 12345」,或把「1」識別成「l」(小寫的 L)。

每份數位文件的掃描方式略有不同。來自無線傳真機的影像尤其嚴重。

解決方案?給 Claude 更詳細的指示。

"text": """請從這張影像中找出運單號碼。

規則:

1. 找出只包含數字和大寫英文的內容。

2. 長度通常是 10~20 位元。

3. 如果看到 'l'(小寫 L),請再次確認是否應該是「1」(數字一)。

4. 結果請用 JSON 格式返回 {"tracking_number": "數字", "confidence": "高/低"}。

"""

準確度從 94% 提升到 98.5%。

第三階段:與試算表連結

連接了 Google Sheets API,將提取的號碼自動輸入到試算表中。這部分比預期要複雜。因為必須確保不與現有資料重複。

from google.oauth2.service_account import Credentials

import gspread

def append_to_sheet(spreadsheet_id, sheet_name, tracking_data):

creds = Credentials.from_service_account_file('credentials.json')

gc = gspread.authorize(creds)

worksheet = gc.open_by_key(spreadsheet_id).worksheet(sheet_name)

existing_numbers = worksheet.col_values(1)

for data in tracking_data:

if data["tracking_number"] not in existing_numbers:

worksheet.append_row([data["tracking_number"], data["timestamp"]])

意外的發現:Windows 設備的效能

一開始在 Mac mini 上測試時速度很慢。但當在團隊成員的 Windows 設備上執行相同程式碼時,速度快了 3 倍。可能是網路頻寬的原因。

發現後,我們將所有大量處理都排定在 Windows 環境中執行。

結果:72 小時的變化

之前:1 天 8 小時,手動輸入

現在:1 天 15 分鐘,自動化 + 驗證

錯誤率:既有 3~5% → 0.5% 以下

團隊成員滿意度:「終於從這項工作中解放了」

最好的部分是什麼?現在可以把那 8 小時用在其他工作上了。

跟著做:邁出第一步

如果有類似的重複工作,可以按這個順序開始。

1. 打開 Claude Code 並說明問題。「我想從影像中提取文字」

2. 用一張範例影像測試。檢查準確度。

3. 用正規表達式明確化模式。

4. 考慮試算表或資料庫連結。

5. 先用小資料夾(5~10 個檔案)進行自動化。

還有一個提示。如果影像品質低,Claude 也會困擾。如果可能的話,用原始檔案或提高掃描解析度,就能大幅提升準確度。