Community影像github.com

文字轉手寫筆記

將任何內容(PDF、貼上的文字、解答、網頁、頁面或白板照片)轉換成看起來像手寫的頁面,可產出筆記本照片風格的 PDF 或 PNG,或乾淨的 iPad 頁面。支援預設手寫字跡或學習使用者自己的字跡,數學公式會以手繪方式呈現。

文字轉手寫筆記 是什麼?

這是一個專為 AI 代理設計的技能,能將各種來源的內容(如 PDF、文字、網頁、照片)轉換為逼真的手寫筆記頁面。它支援兩種主要風格:筆記本風格(模擬手機拍攝的真實筆記本頁面,包含不均勻光線、傾斜線條和原子筆墨跡)以及 iPad 風格(使用類似 Apple Pencil 的平滑筆觸在乾淨頁面上呈現)。技能內建預設手寫字體,但也能從使用者提供的筆記照片中學習其個人字跡,透過分割、標籤和建構流程產生自訂字跡。它支援多種紙張樣式(方格、橫線、Seyès 等)、墨水顏色和頁面尺寸。數學公式使用 LaTeX 語法(如 `$\frac{a}{b}$`、`$\sum$`),並以手繪風格繪製。此技能適用於 ChatGPT、Claude Code 等 AI 代理的沙盒環境,僅需 Python 的 Pillow 和 numpy 函式庫。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/yahyaraissouni/text-to-handwritten-notes-skill/tree/HEAD

Installed? Explore more 影像 skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

文字轉手寫筆記 是做什麼的?

您將內容轉換為看起來像手寫的頁面。渲染器是 scripts/handnotes.py。它只需要 Python 的 Pillow 和 numpy,這些在 ChatGPT 和 Claude 的程式碼沙盒中都已預先安裝。

預設結果: 方格紙筆記本頁面的手機照片,藍色墨水,使用預設手寫字跡。如果使用者沒有特別要求,就給他們這個。

步驟 0:誰的字跡?

簡短詢問一次:「請盡量多傳幾張您手寫的照片給我(任何您已經寫過的頁面:筆記、作業)。否則我會使用預設手寫字跡。」

  • 沒有照片: 使用預設手寫字跡。不要再問。
  • 有照片: 先學習它們(請參閱下方「從照片學習手寫字跡」),然後使用 --hand their-hand 進行渲染。更多頁面能為每個字母提供更多樣本,效果更自然。3 到 6 頁就很好。

步驟 1:讀取輸入

  • PDF: 使用 pypdf、pdftotext 或您自己的閱讀器提取文字。對於掃描的 PDF,請檢視頁面圖片。
  • 照片、螢幕截圖、白板: 使用視覺能力自行閱讀。不要執行 OCR 函式庫。
  • 文字、解答、網頁: 直接使用提供的內容。

步驟 2:撰寫頁面

有兩種情況。

  • 課程筆記: 寫出好學生會寫的內容。簡短的行、關鍵字、原始內容的結構,長度約為原始內容的 15% 到 30%。
  • 使用者提供的解答或作業: 保留每個步驟和每個數字。用學生在紙上寫的方式來寫:使用 1/、a) 和 b) 標籤,每個方程式一行,步驟之間用 =>。不要添加看起來像 AI 的裝飾:沒有「提示:」、沒有到處都是的螢光筆、沒有粗體。只有在使用者會這樣做時,才在最終結果下劃線或加上 !!。

保留使用者的語言。數字、名稱和公式必須完全準確。

標記語言:

# 標題                     ## 標題                ### 子標題(加底線)
- 項目符號(2 個空格 = 一層縮排)                1. 編號
-> 箭頭行               !! 重要行(紅色)   > 旁註(強調墨水)
[ ] 待辦事項   [x] 已完成(打勾)   ---  分隔線       空白行 = 跳過一行
行內:==螢光==  **粗體**  __底線__  ~~刪除線~~  {red}彩色墨水{/}  ->  (繪製箭頭)
\$  = 錢字符號      $...$ 行內數學      $$...$$ 獨佔一行 = 顯示公式

數學。 每個公式都放在 $...$ 中,即使是像 $x^2$ 或 $E_2$ 這樣的短公式。支援: \frac{a}{b}、\sum_{k=1}^{n}、\prod、\int_a^b、\lim_{n \to +\infty}、\sqrt{x}、\sqrt[3]{x}、x^{n+1}、x_i、\left( ... \right)、\binom{n}{k}、\vec{u}、\bar{x}、\mathbb{R}、\text{...}、\mid、希臘字母、\in \subset \cup \cap \emptyset \forall \exists \leq \geq \neq \approx \pm \times \cdot \infty \to \implies \iff,以及空格 \, \; \quad。

依照原始來源撰寫小數(0,81 或 0.81),較大的數字在數學環境內寫成 50\,000。按照閱讀方式撰寫區間:$[0, 1[$。將大型公式放在自己的 $$...$$ 行中。如果公式太寬無法容納在頁面上,它會縮小以適應,但將長公式在 = 處分成兩行看起來更自然。

將頁面儲存為 notes.md。

步驟 3:渲染

python scripts/handnotes.py render notes.md -o notes.pdf

這會產生預設結果:筆記本照片、方格紙、藍色墨水、預設手寫字跡。僅在使用者要求時才更改下列選項:

選項值
--stylenotebook(真實頁面的手機照片:不均勻光線、向下傾斜的線條、傾斜的紙張、原子筆墨水)· ipad(獨立引擎:字母以實心重新描繪,在乾淨頁面上的平滑 Apple Pencil 筆觸)
--papersquared(筆記本)或 grid(iPad)、lines、college、seyes、dots、blank
--handdefault,或由 build-hand 或 learn 建立的資料夾
--font改用手寫字型:caveat、kalam、patrick、gochi、indie、playpen
--inkblue(筆記本)或 black(iPad)、red、green、purple、pencil
--pagea4、letter、ipad、ipad-landscape
--seed N每次產生相同的頁面;更改 N 以獲得不同的版本

使用 -o notes.png 來取得圖片(notes-1.png、notes-2.png,以此類推)而不是 PDF。

步驟 4:檢查,然後交付

查看第 1 頁(如果您無法檢視 PDF,請渲染成 PNG)。確認沒有行跑出頁面或與其他行重疊,並且每個數字都與原始來源相符。然後提供檔案。

從照片學習手寫字跡

這個功能適用於任何人已經寫好的頁面。他們不需要填寫任何東西。

  1. 切割: python scripts/handnotes.py segment p1.jpg p2.jpg p3.jpg -o hand-work 這會移除筆記本的印刷線條,切割每一塊墨水,並將編號的圖紙寫入 hand-work/sheet-pageN-K.png。

  2. 標籤: 查看每一張圖紙。您知道這些頁面寫了什麼,因為您可以閱讀原始照片。撰寫 hand-work/labels.json(頁碼依照片順序排列):

    {"1": {"12": "a", "13": "(", "40": "the", "41": "7"}, "2": {"5": "é", "9": "dy"}}
    
    • 只標記您確定的片段。跳過任何不清楚、被切一半、與相鄰片段黏在一起、被劃掉或只是線條片段的部分。
    • 一個包含幾個連在一起字母的片段可以標記為那個單字或組合("the"、"le"、"qu")。每當該序列出現時就會重複使用它,這看起來非常自然。
    • 目標是每個小寫字母和每個數字至少要有 2 或 3 個樣本。
  3. 建構: python scripts/handnotes.py build-hand hand-work hand-work/labels.json -o their-hand 這會標準化大小和墨水強度,丟棄切割不佳的樣本,並從書寫者自己的筆畫中建構缺少的字母(從 n 得到 u,從兩個 n 得到 m,從兩個 v 得到 w、r、q)。重音符號(é è à ê ç ë)會繪製在其各自的普通字母上。它會印出字型仍然代用的字母。

  4. 檢查一次渲染。 查看一個頁面並放大任何看起來破碎或太淡的字母。在 their-hand/hand.json 列出的 their-hand/glyphs 檔案中找到它的樣本,移除錯誤的標籤,然後重新建構。

保留 their-hand 資料夾:這是他們的手寫字跡。提供將它壓縮成 zip 檔案的選項,以便他們下次可以重複使用。

還有一個範本路線(template,然後 learn):使用者填寫一個 2 頁的方格框格。這種方式更乾淨,但對他們來說工作量更大,所以只在他們比較喜歡時才提供。

相關技能