# 官方「PDF 填表技能」實測：英文表單 0.2 秒填完，中文名字卻整格空白

- 網址：https://blog.valenvan.uk/posts/anthropics-skills.html
- 發布日期：2026-11-06
- 測試設備：Mac mini M4 Pro（12 核、64GB）
- 專案：anthropics/skills（https://github.com/anthropics/skills），未標示 授權
- 測試版本：anthropics/skills 2026-10-28 提交
- 實測影片：https://www.youtube.com/shorts/kpYLvJrPRXU

## 重點摘要

- 用自製三欄 PDF 表單實測 anthropics/skills 的 PDF 填表腳本：檢查約 0.08 秒、讀欄位約 0.05 秒、填寫約 0.07 秒，英文姓名、信箱與勾選框都填對。
- 中文姓名「王小明」填入後整格空白，只跳一行字型編碼不支援的警告、程式照常結束；信箱欄不受影響。
- 把填好的 PDF 轉成圖片要另外安裝 poppler，且輸出資料夾要先建好，否則分別報 poppler 缺失與 FileNotFoundError。
- 只測 PDF 可填欄位流程；其餘 18 個技能、Excel 重算與 AI 自行操作的表現未測；PDF 等四個文件技能為專有授權，非開源。
- **結論：** 英文可填表單用它的腳本很快，但中文姓名會變空白，要先自己處理字型。
- **適合：** 想看官方技能實作、要批次填英文 PDF 表單的人
- **不適合：** 表單內容以中文為主，或需要把專有授權的 PDF 技能直接商用改作的人

| 實測項目 | 結果 |
|---|---|
| 檢查有沒有欄位 | 約 0.08 秒 |
| 讀出欄位 | 約 0.05 秒（3 個欄位） |
| 填寫存檔 | 約 0.07 秒 |
| 英文姓名、信箱、勾選框 | 全部填入 |
| 中文姓名「王小明」 | 姓名欄空白，只有警告 |
| 技能資料夾數 | 19 個 |

你收到一份要填的 PDF 表單，聽說現在 AI 能代填。GitHub 上有個 anthropics/skills 專案，約 18.8 萬顆星，是 Anthropic 官方的「技能庫」，裡面就有 PDF 填表的技能。這篇不是介紹它有多神，而是我照它的說明書實際跑一遍，看哪裡順、哪裡卡。

## 技能庫是什麼

技能（skill）就是一個資料夾：一份教 AI 做事的說明書（SKILL.md），加上幾支小程式。專案裡共有 19 個技能資料夾。PDF 技能的程式放在 `skills/pdf/scripts/`，其中和填表有關的三支是：

- `check_fillable_fields.py`：檢查這份 PDF 有沒有可填欄位
- `extract_form_field_info.py`：把欄位名稱、類型、位置列成 JSON
- `fill_fillable_fields.py`：照你給的值填進去

平常是 AI 讀說明書後自己下這些指令；這次我自己扮演 AI，照說明書的順序跑。授權方面：PDF、Word、簡報、Excel 這四個文件技能的 LICENSE 寫的是專有條款（README 稱 source-available，不是開源）；其他 14 個資料夾附的是 Apache 2.0 授權檔。

## 測試設定

- 測試機：Mac mini M4 Pro（12 核、64GB），腳本在 Linux 的 Python 3.12 環境跑
- 專案版本：2026-10-28 的最新提交
- 測試表單：我用 reportlab 自己做的一頁 PDF，三個欄位：姓名（文字）、信箱（文字）、訂閱（勾選框）

```bash
pip install pypdf reportlab pdf2image pillow
git clone https://github.com/anthropics/skills
```

## 跑起來

```bash
cd skills/skills/pdf/scripts
python3 check_fillable_fields.py form.pdf
# This PDF has fillable form fields

python3 extract_form_field_info.py form.pdf fields.json
# Wrote 3 fields to fields.json
```

`fields.json` 會列出 `full_name`、`email`（text）和 `subscribe`（checkbox，勾選值 `/Yes`）。你在每個欄位加一個 `"value"`，再交給填寫腳本：

```bash
python3 fill_fillable_fields.py form.pdf fill.json out.pdf
```

| 步驟 | 耗時 |
|---|---|
| 檢查有沒有欄位 | 約 0.08 秒 |
| 讀出欄位 | 約 0.05 秒 |
| 填寫存檔 | 約 0.07 秒 |

英文姓名 `Ming Wang`、信箱和勾選框都填進去了（下圖，轉成圖片後的結果）。

![英文值：姓名、信箱與勾選框都填入](https://blog.valenvan.uk/img/anthropics-skills-article_1.png)

## 踩到的坑

**1. 中文姓名整格空白。** 我把姓名換成「王小明」，信箱照常填入，姓名欄卻是空的。程式只在畫面上印一行警告（文字含有字型編碼不支援的字元），並沒有失敗退出。這是用 pypdf 預設字型填欄位的限制；我沒有進一步試其他字型或 `auto_regenerate` 設定，所以不確定換哪個做法能解。要填中文的人，填完一定要打開 PDF 確認。

![中文值：姓名欄空白，信箱有填入](https://blog.valenvan.uk/img/anthropics-skills-article_2.png)

附註：這組中文測試的 JSON 我只放了姓名與信箱，沒有勾選框，所以圖中的勾選框沒勾是我沒給值，不是工具的問題。

**2. 轉成圖片要另外裝 poppler。** 說明書建議把 PDF 轉成圖片來核對，`convert_pdf_to_images.py` 靠 pdf2image，需要系統有 poppler。沒裝時會報 `Is poppler installed and in PATH?`。在 Debian 系統上：

```bash
apt install poppler-utils
```

**3. 輸出資料夾要先建好。** 裝好 poppler 後再跑，如果輸出資料夾不存在，會報 `FileNotFoundError: .../page_1.png`。先 `mkdir imgs` 再跑就會輸出 `Saved page 1`。

## 沒測的部分

只測了 PDF 的「可填欄位」流程。沒測：沒有欄位的 PDF（需要用座標加註文字的另一條流程）、Excel 的重算腳本（需要 LibreOffice）、Word、簡報，以及另外 14 個技能。也沒測 AI 實際照說明書操作的表現，所以「AI 能不能自己填好」這題，這篇沒有答案，只驗證了它附的腳本。

## 適合誰

- 適合：想了解官方技能長怎樣、手上是英文可填表單、想用腳本批次填的人
- 不適合：表單內容主要是中文、沒有可填欄位的掃描檔，或需要直接商用改作（PDF 技能是專有授權，使用前請讀 LICENSE.txt）

專案連結：https://github.com/anthropics/skills
