← 文章列表
小窝文章 ·

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 也会困扰。如果可能的话,用原始文件或提高扫描分辨率,就能大幅提升准确度。