那本什麼都記得、什麼都找不到的筆記本
她有三本上學期的筆記本。有機化學、分子生物學、歐洲史。在那六百頁裡的某個地方,有一張她十月上課時畫的圖 -- 一個反應機制,解釋了期末考必考的那個觀念。她記得自己畫過。她記得用的是綠色的筆。但她不記得是在第一本還是第三本,靠前面還是靠後面,左頁還是右頁。
她開始翻。一頁一頁。翻過寫在生物筆記空白處的購物清單。翻過一個沒有名字的電話號碼。翻過三頁被劃掉的論文大綱草稿。圖不在那裡。第二本也沒有。四十分鐘後,她在第三本裡找到了,夾在一張待辦清單和一隻貓的塗鴉之間。
這就是手寫筆記的根本矛盾。寫的動作幫助你學習。研究反覆證實這一點 -- 手寫會啟動比打字更深層的認知處理。但筆記本身在檢索時幾乎無用。筆記本沒有搜尋欄。沒有 tags。沒有 links。它是一種線性儲存媒介,活在一個需要隨機存取的世界裡。
如果你能保留手寫的學習效益,同時獲得數位的檢索能力呢?不是改用平板。不是把每個字重新打一遍。而是拍下你的筆記本,讓 AI 去讀 -- 不只是辨認字元,而是理解內容、把它重組成你可以搜尋的東西。
這篇文章就是在建這個。一套把整疊筆記本照片變成乾淨、結構化 markdown 檔案的流程。那種你真的能搜尋、能連結、能找到東西的檔案。
你會建出什麼
流程的形狀很簡單:
- 拍照。 手機相機。不需要特別的設備。
- 把照片餵給 Claude Code。 它用 vision 功能讀你的手寫字。
- AI 提取並組織內容。 不是扁平的逐字轉錄,而是有標題、列表、tags、旁註整合的結構化 markdown。
- 你得到可搜尋的檔案。 按主題分一個、按堂課分一個,你想怎麼切就怎麼切。
跟傳統 OCR 的關鍵差異:Claude 不只是把歪歪扭扭的筆跡轉成字元。它像人類一樣讀頁面。主要段落旁邊有箭頭指向空白處的旁註?AI 理解那個旁註是對段落的補充,會自然地整合進去。一個清單有些項目被圈起來、有些被劃掉?AI 辨識哪些是被強調的、哪些是被刪除的,只輸出相關的內容。一頁開頭是化學筆記、結尾是「記得買牛奶」的提醒?AI 把化學內容和購物備忘分開,各自歸檔到該去的地方。
這不是 OCR。這是閱讀理解。
前置需求
- Claude Code 已安裝並認證。還沒裝的話,跟著第一個小時教學走,十分鐘搞定。
- 一支有相機的手機。 近十年內的任何手機都行。
- 你想數位化的手寫筆記。 筆記本、散頁、便利貼、索引卡、餐巾紙 -- 任何上面有字的東西。
- 基本 terminal 操作能力。 你會輸入指令。不需要寫程式。
第一步:拍你的筆記
輸出品質取決於輸入品質。不是美學品質 -- 是可讀性品質。幾個原則:
光線比相機畫質重要。 在日光下或明亮的檯燈下拍。避免陰影落在頁面上。AI 讀錯手寫的頭號原因是陰影遮住筆畫,不是相機解析度。
把頁面壓平。 捲起來、字消失在裝訂線裡的筆記本頁面,不管是人還是 AI 都很難讀。把筆記本壓平。用書鎮或第二支手機。
一頁一張照片。 不要試圖拍跨頁。每頁的解析度會降低,而且靠近裝訂線的字會變形。一張照片,一頁。
從正上方拍。 角度變形會讓字母變得模糊。一個 30 度角拍的 a 看起來可能像 o。手機直接放在頁面正上方。
把照片整理到一個資料夾:
mkdir -p ~/handwritten-notes/photos
# 把手機裡的照片傳到這個資料夾
# 用 AirDrop、USB、雲端同步 -- 怎麼方便怎麼來
盡可能按順序命名。大部分手機會在照片加上時間戳,這會保留順序。如果你在拍多本筆記本,用子資料夾:
~/handwritten-notes/photos/
orgchem-notebook/
IMG_0401.jpg
IMG_0402.jpg
IMG_0403.jpg
...(80 頁)
biology-notebook/
IMG_0501.jpg
IMG_0502.jpg
...(120 頁)
history-notebook/
IMG_0601.jpg
IMG_0602.jpg
...(90 頁)
第二步:設定指示
在你的工作目錄建立一個 CLAUDE.md。這會告訴 AI 你要的輸出結構:
# Handwritten Note Digitization Rules
## Goal
Read photos of handwritten notebook pages. For each page, extract the
content, understand its structure, and output clean structured markdown.
## Input
Photos are in ~/handwritten-notes/photos/, organized by notebook.
## Output
Write organized markdown files to ~/handwritten-notes/output/.
## Reading Rules
1. READ the handwriting carefully. If a word is unclear, use surrounding
context to infer it. Mark truly illegible words as [illegible].
2. UNDERSTAND the structure of the page. Identify:
- Main content vs. margin notes
- Headings vs. body text
- Lists (numbered or bulleted)
- Diagrams (describe them in words)
- Crossed-out text (skip it unless it seems intentional)
- Circled or highlighted items (mark as emphasized)
- Arrows connecting ideas (integrate the connection in the output)
3. SEPARATE unrelated content on the same page. Chemistry notes and a
grocery list on the same page become two different entries.
4. INTEGRATE margin notes into the main content where they belong.
A margin note next to a paragraph is a comment on that paragraph --
include it as a parenthetical or a blockquote, not as a separate section.
## Output Format
For each notebook, create markdown files organized by topic or lecture:
~/handwritten-notes/output/{notebook-name}/{topic}.md
Each file must include:
### Frontmatter
---
title: "Descriptive Topic Title"
date: YYYY-MM-DD (estimated from context, or "unknown")
source: notebook name and page numbers
tags:
- subject-tag
- topic-tag
---
### Content
- Clear headings (H1 for the topic, H2 for subtopics)
- Clean formatted text with proper markdown
- Lists preserved as markdown lists
- Diagrams described in blockquotes: > **Diagram:** description
- Key terms in **bold**
- Formulas in inline code or code blocks
- Margin notes as blockquotes: > **Note:** content
### Cross-References
- If content on one page references content on another, add links
between the output files: [See Topic Name](./topic-name.md)
## Quality Rules
- Never invent content that is not on the page.
- Preserve the author's meaning, even if the grammar is rough.
- Clean up obvious abbreviations: "w/" becomes "with", "bc" becomes
"because", "govt" becomes "government" -- unless the abbreviation
is a standard term in the field.
- Keep technical notation exact. Do not expand chemical formulas or
mathematical symbols.
## Index
Generate ~/handwritten-notes/output/INDEX.md listing:
- Every notebook processed
- Every topic file created, with page number references
- A tag cloud showing the most frequent topics
這是整個操作的大腦。按照你的思考方式調整輸出格式。學生可能想按堂課分檔。研究者可能想按實驗分檔。正在數位化食譜筆記本的人可能想按菜餚分檔。
第三步:跑數位化
cd ~/handwritten-notes
claude
在 Claude Code 的 prompt 裡輸入:
Read CLAUDE.md for instructions. Then process all photos in photos/orgchem-notebook/.
For each page, read the handwriting, extract the content, and write
structured markdown files to output/orgchem-notebook/.
Show me the first 3 pages as a preview before processing the rest.
預覽步驟很重要。它讓你在 AI 處理 80 頁之前先校準。你可能會發現你的縮寫需要不同的展開規則,或者 AI 把你的 t 讀成了 l。趁早修正指示。
單頁的預覽輸出可能長這樣:
## 第 1 頁(IMG_0401.jpg)- 預覽
**偵測到的內容:** 親核取代反應的上課筆記
**結構:** 標題、三個小節、兩張圖、右側空白處旁註
**建議輸出:**
```markdown
---
title: "親核取代反應:SN1 vs SN2"
date: 2025-09-15
source: orgchem-notebook, page 1
tags:
- organic-chemistry
- reaction-mechanisms
- substitution
---
# 親核取代反應:SN1 vs SN2
## SN2 機制
- 單一協同步驟
- 親核劑從**背側進攻**
- Rate = k[substrate][nucleophile]
- 立體化學反轉
> **圖示:** Newman 投影式,親核劑從碳上離去基的背面
> 靠近。箭頭同時顯示鍵的形成(Nu-C)和鍵的斷裂(C-LG)。
> **旁註:** 「這個金教授每次都考。注意立體化學的翻轉。」
## SN1 機制
- 兩步驟:先離子化,再親核進攻
- Rate = k[substrate](一級反應 -- 親核劑不在速率方程式裡)
- 形成碳陽離子中間體
- 立體中心產生消旋化(兩面都會被進攻)
> **圖示:** 能量圖,兩個過渡態之間有一個碳陽離子
> 中間體的谷。第一步(離子化)的 E_a 比第二步高。
## 什麼時候走哪條路
| 因素 | 有利 SN2 | 有利 SN1 |
|------|----------|----------|
| 受質 | 一級、甲基 | 三級 |
| 親核劑 | 強 | 弱(或溶劑) |
| 溶劑 | 極性非質子性 | 極性質子性 |
| 離去基 | 兩者都要好的 LG | 兩者都要好的 LG |
[參見消除反應](./elimination-reactions.md)了解
競爭的 E1/E2 路徑。
```
看看發生了什麼。一張有箭頭、圈起來的術語、空白處的潦草字跡、兩張圖的手寫頁面,變成了一份乾淨、結構化的文件。關於金教授考試偏好的旁註被保留為上下文,就放在相關內容旁邊。圖示的描述夠詳細,讀書時有用。比較表在筆記本裡可能不是表格 -- 很可能是散落的要點 -- 但 AI 理解了底層的比較關係,把它結構化成了表格。
如果預覽看起來沒問題:
This looks correct. Process all remaining pages in orgchem-notebook/.
第四步:處理棘手的情況
不是每一頁都是整齊的上課筆記。筆記本是混亂的。AI 是這樣處理真實世界的混亂的。
內容混雜的頁面
一頁裡可能上面是生物上課筆記、中間是提醒自己寄 email 給指導教授、下面是一個分子的塗鴉。AI 會分開這些。上課筆記進生物檔案。提醒進 misc/tasks.md 或直接跳過,取決於你的指示。
很爛的字
每個人都覺得自己的字最爛。通常沒有那麼爛。Claude 的 vision 功能能處理大部分手寫風格,包括草寫、草寫印刷混合體、和教授講太快時出現的壓縮潦草字。真的讀不出來時,它標 [illegible] 然後繼續。你可以之後在輸出檔裡搜尋 [illegible],靠著周圍已經清理好的上下文,用記憶填補空缺。
圖表和繪圖
流程圖。電路圖。神經系統的地圖。AI 不能把它們重建成圖片,但它可以用文字描述得夠精確,讓描述本身對讀書有用。一張反應機制的圖變成一段逐步的文字描述。一張流程圖變成一個巢狀列表。如果你需要原始圖片,輸出檔會引用原始照片的路徑。
多語言筆記
如果你在筆記裡切換英文和另一種語言 -- 雙語學生的常見模式 -- AI 兩種都能處理。它會保留原本的語言而不翻譯,除非你另外指示。
第五步:批次處理所有筆記本
用一本筆記本校準好之後,處理剩下的:
Now process photos/biology-notebook/ and photos/history-notebook/
using the same rules. Output to their respective directories.
大批量處理 -- 比如三本筆記本共 300 頁 -- 需要時間。Claude Code 會逐頁處理,讀取每張圖片、寫入每個輸出檔。你可以看著進度跑,也可以去做別的事。輸出以檔案的形式累積在你的資料夾裡,所以你可以在後面的頁面還在處理時,先開始讀前面的成果。
所有筆記本處理完後,產生主索引:
Generate INDEX.md as specified in CLAUDE.md.
Include a summary of what was processed and a tag cloud.
索引變成你的入口。每個主題、每堂課、每本筆記本 -- 從一個檔案就能搜尋。
第六步:讓它可搜尋
你的輸出資料夾現在充滿了結構化的 markdown 檔。重點來了。
找到那張化學圖:
cd ~/handwritten-notes/output
grep -r "reaction mechanism" --include="*.md" -l
三個結果,0.2 秒。你花了 40 分鐘翻找的那張圖在 orgchem-notebook/nucleophilic-substitution.md,第 34 行。
找特定主題的所有東西:
grep -r "mitochondria" --include="*.md" -l
它出現在你的生物筆記、你的歷史筆記(一段關於細胞生物學史的內容裡)、而且意外地出現在你的化學筆記裡,教授提到 ATP 合成的地方。三條你翻頁永遠不會發現的連結。
用任何 markdown 工具打開。 輸出檔在 Obsidian、VS Code、Notion(匯入 markdown)、Bear、或任何文字編輯器都能用。它們就是檔案。沒有 lock-in。
想更進一步?散落筆記整理指南教你怎麼把這些 markdown 檔整理進一個有 wikilinks、tags 和知識圖的 Obsidian vault。
持續數位化的腳本
你會繼續寫手寫筆記。新的筆記本會填滿。這個腳本可以增量處理新照片:
#!/usr/bin/env bash
set -euo pipefail
PHOTOS_DIR="${1:?Usage: digitize-notes.sh <photos-directory>}"
OUTPUT_DIR="${2:-$(dirname "$PHOTOS_DIR")/output}"
PROCESSED_LOG="$OUTPUT_DIR/.processed-photos.txt"
mkdir -p "$OUTPUT_DIR"
touch "$PROCESSED_LOG"
# 找出還沒處理的照片
NEW_PHOTOS=$(comm -23 \
<(find "$PHOTOS_DIR" -type f \( -name "*.jpg" -o -name "*.jpeg" -o -name "*.png" -o -name "*.heic" \) | sort) \
<(sort "$PROCESSED_LOG"))
NEW_COUNT=$(echo "$NEW_PHOTOS" | grep -c '.' || true)
if [[ "$NEW_COUNT" -eq 0 ]]; then
echo "No new photos to process."
exit 0
fi
echo "Found $NEW_COUNT new photos to digitize."
claude -p "You are a handwritten note digitizer.
Read the CLAUDE.md in $(dirname "$PHOTOS_DIR") for rules.
These are NEW photos to process:
$NEW_PHOTOS
Read the handwriting in each photo, extract and structure the content,
and write organized markdown to $OUTPUT_DIR/.
Append new entries to existing topic files where relevant.
Update INDEX.md with new entries.
After processing, list each file you processed (one per line, full path)."
echo "$NEW_PHOTOS" >> "$PROCESSED_LOG"
echo "Done. $NEW_COUNT pages digitized to $OUTPUT_DIR."
每次拍了新頁面就跑。每次只處理新的。
到底改變了什麼
之前:三本筆記本,六百頁手寫筆記。線性、不可搜尋的存檔。要找任何東西都得一頁一頁翻。你寫下來的知識被鎖在一個無法搜尋、無法連結、無法查詢的媒介裡。
之後:一個資料夾裡的結構化 markdown 檔。每堂課、每個主題、每則旁註 -- 不到一秒就能搜到。圖示用文字描述。空白處的潦草字被整合進它們所註解的內容。跨筆記本的交叉引用連結了相關主題。一份索引映射了你一整個學期的筆記。
手寫在上課時完成了它的任務 -- 它幫你把知識編碼進大腦。AI 完成了手寫做不到的任務 -- 它讓那些知識變得可檢索。你保留了筆。你獲得了搜尋欄。
筆記本還在那裡。照片還在那裡。什麼都沒有丟失或被取代。你只是為同一份知識建了第二個介面 -- 一個能在 0.2 秒而不是 40 分鐘內回答「我在哪裡寫過反應機制?」這個問題的介面。
想開始用 Claude Code,請看第一個小時教學。想把數位化的手寫筆記跟其他數位筆記一起整理,請看完整筆記整理指南。
Ready to streamline your terminal workflow?
Multi-terminal drag-and-drop layout, workspace Git sync, built-in AI integration, AST code analysis — all in one app.