Cynthia
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note No publishing access yet

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.

      Your account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

      Your team account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

      Explore these features while you wait
      Complete general settings
      Bookmark and like published notes
      Write a few more notes
      Complete general settings
      Write a few more notes
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights New
    • Engagement control
    • Make a copy
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Make a copy Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note No publishing access yet

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.

    Your account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

    Your team account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

    Explore these features while you wait
    Complete general settings
    Bookmark and like published notes
    Write a few more notes
    Complete general settings
    Write a few more notes
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    2
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    --- title: 臺灣車牌規則用於車牌辨識 date: 2020-03-03 is_modified: false disqus: cynthiahackmd categories: - "先備知識" - "智慧計算 › 人工智慧" tags: - "光學字元辨識 OCR" - "車牌辨識" - "電腦視覺 CV" --- {%hackmd @CynthiaChuang/Github-Page-Theme %} <br> 去年(2019)年底接到**車牌辨識**的案子,主要是負責 ==OCR(Optical Character Recognition)== 這個部份。 不過這篇跟 OCR 沒關係,而是主要專注在**車牌**這件事上。 至於 OCR 那篇還在我草稿夾,連怎麼寫頭緒都還沒理出來呢 Orz... :::info :information_source: **關於文中的 Model** 下文中所提到的 Model 指的是 CRNN + CTC Loss。而機器學習的訓練一些考量也是基於此模型出發的。 ::: <!--more--> ## 前言 因為車牌是有==地域性==的,各國車牌的字型、格式、顏色...等都不盡相同。雖然我不需要進行字模比對,但還是需要掌握這些規則,作為訓練特徵或 post-processing 的校正流程。 如果對車牌的演變或細節有興趣的,可以關注這個 [歐沃車牌情報站](https://www.facebook.com/TaiwanLicensePlate/) 這個粉絲團,或者是他的 Medium [車牌研究報告](https://medium.com/%E8%BB%8A%E7%89%8C%E7%A0%94%E7%A9%B6%E5%A0%B1%E5%91%8A) ,關於這些這位作者考察得很詳細,不過可惜因為健康因素,最近都沒有更新 :crying_cat_face: <p class="illustration"> <img src="https://i.imgur.com/UNz6ZLZ.png" alt="日本車牌"> 日本車牌(圖片來源: <a href="https://zh.wikipedia.org/wiki/%E6%97%A5%E6%9C%AC%E8%BB%8A%E8%BC%9B%E8%99%9F%E7%89%8C">維基百科</a>) </p> ## 目前車牌 距離新式第八代車牌啟用至今已經七年多了...時間還真快阿...(莫名的感嘆起來了... 由於七換八沒有實施全面換發,因此目前是採兩代車牌並行使用的做法。車牌字元由==英文字母與阿拉伯數字混用==(不計入軍、試、臨、使...等特殊車牌),若僅依照 `-` 進行區分,共有 `2-4`、`4-2`、`2-2`、`3-2`、`2-3`、`3-3` 與 `3-4`,共 ==7 種格式==,長度由 ==4 到 7== 不等。 當然這些車牌是有搭配不同的車種使用,這邊先不考慮這個,因為預期執行完車牌定位後,拿到資料會是車牌本身。不過,也可以先用物件偵測,取得車種資料作為額外資訊,或許可以幫助提辨識效率。 ### 第七代 第七代車牌行之有年,應該也是臺灣車牌史上使用最久的一代。但因其歷史悠久(?),歷經車輛數目的大幅增加,再加上各種奇怪政令導致車牌樣式五花八門。(有興趣的看看這幾篇:[簡介](https://medium.com/%E8%BB%8A%E7%89%8C%E7%A0%94%E7%A9%B6%E5%A0%B1%E5%91%8A/%E8%BB%8A%E7%89%8C%E7%A0%94%E7%A9%B6%E5%A0%B1%E5%91%8A-1-%E5%8F%B0%E7%81%A3%E7%AC%AC7%E4%BB%A3%E9%80%9A%E7%94%A8%E8%BB%8A%E8%BC%9B%E8%99%9F%E7%89%8C%E7%B0%A1%E4%BB%8B-2a0cf7414c75)、[演進 I](https://medium.com/%E8%BB%8A%E7%89%8C%E7%A0%94%E7%A9%B6%E5%A0%B1%E5%91%8A/%E8%BB%8A%E7%89%8C%E7%A0%94%E7%A9%B6%E5%A0%B1%E5%91%8A-3-%E5%8F%B0%E7%81%A3%E7%AC%AC7%E4%BB%A3%E9%80%9A%E7%94%A8%E8%BB%8A%E8%BC%9B%E8%99%9F%E7%89%8C%E7%B7%A8%E7%A2%BC%E6%BC%94%E9%80%B2-i-d74999cc9750)、[演進 II](https://medium.com/%E8%BB%8A%E7%89%8C%E7%A0%94%E7%A9%B6%E5%A0%B1%E5%91%8A/%E8%BB%8A%E7%89%8C%E7%A0%94%E7%A9%B6%E5%A0%B1%E5%91%8A-4-%E5%8F%B0%E7%81%A3%E7%AC%AC7%E4%BB%A3%E9%80%9A%E7%94%A8%E8%BB%8A%E8%BC%9B%E8%99%9F%E7%89%8C%E7%B7%A8%E7%A2%BC%E6%BC%94%E9%80%B2-ii-2194daa0ebf4)) <p class="illustration"> <img src="https://i.imgur.com/aFibpWd.gif" alt="第七代各車種號牌繪圖範例"> 第七代各車種號牌繪圖範例(圖片來源: <a href="https://zh.wikipedia.org/wiki/%E8%87%BA%E7%81%A3%E8%BB%8A%E8%BC%9B%E7%89%8C%E7%85%A7#cite_note-2">維基百科</a>) </p> #### 外觀 **1. 尺寸**: 先看看外觀的部份,第七代外觀尺寸是 `320 * 150` 、 `250 * 140` 、 `260 * 150` 與 `320 * 150` 四種,分別常見於自小客車、機車、重機與拖車和電動車上。 由於各式車牌大小相異,訓練時可以兩種嘗試方向,一個使用 padding 填充、二是選擇一個尺寸後縮放圖片長寬比例。不過考慮到實務上截圖時,三個維度會存在夾角,若進行轉正後,比例可能已經跑掉,倒不如直接選擇一個尺寸並縮放。是說,也可以來試試看不轉正,直接訓練會有啥效果? <br> **2. 底色與文字顏色**: 底色與文字顏色方面,除了常見的白底黑字外,又存在白底綠字、綠底白字、白底紅字、紅底白字、黃底黑字等五種,與車種存在一對多的配對關係。 因車種與編碼格式存在關聯性,訓練時或許可採用彩色圖片 RGB 3 個 channel 進行訓練。 <br> **3. 字體**: 七代車牌採用的是==現代電腦字體風格==,雖然有將字寬由 10mm 加粗至 12mm,意圖提升準確度。 不過因為文字本身特性,與第六代相比,本來就缺少了些特徵點,這也導致第七代的車牌特別容易偽造與修改。這也反應到訓練過程中,導致當車牌被遮擋時,訓練難會變得艱難。 <p class="illustration"> <img src="https://i.imgur.com/BRsKmiY.png" alt="第六代與第七代號牌數字例示"> 第六代與第七代號牌數字例示(圖片來源: <a href="https://medium.com/%E8%BB%8A%E7%89%8C%E7%A0%94%E7%A9%B6%E5%A0%B1%E5%91%8A/%E8%BB%8A%E7%89%8C%E7%A0%94%E7%A9%B6%E5%A0%B1%E5%91%8A-1-%E5%8F%B0%E7%81%A3%E7%AC%AC7%E4%BB%A3%E9%80%9A%E7%94%A8%E8%BB%8A%E8%BC%9B%E8%99%9F%E7%89%8C%E7%B0%A1%E4%BB%8B-2a0cf7414c75">車牌研究報告 Medium</a>) </p> P.S. 我真的覺得臺灣歷代車牌中,第六代的字體最好看。 :heart_decoration: #### 編碼格式 在七代車牌字元長度若不計算分隔符號的話為 4 到 6,有 `2-4`、`4-2`、`3-2`、`2-3`、`3-3` 與 `2-2` 共六種格式。 <br> 先來整理 `2-4` 或 `4-2` 這格式。這種 6 碼的編碼格式是給小客車來使用,但這 2 種編碼格式又可延伸出 4 種排列組合...。 七代甫一開始的設計其實只有 `2-4` 且其字元為 ==英英-數數數數==,但因設計之初沒有考慮到舊牌換領,導致很快就面臨車牌不足的窘境。因此後來又推出 ==英數-數數數數== 與 ==數英-數數數數== 兩種。 但這樣的設計又撐了幾年後,最終還是再度面臨車牌不足的狀況。而此時八代換牌的前置作業尚未完成,公路總局乾脆把編碼區對調,因此產生了 `4-2` 的編碼格式,其衍生的字元組合有 ==數數數數-英英== 與 ==數數數數-英數== 兩種,至於 `數數數數-數英` ,在新式車牌目前逐漸普及的狀況下,應該是不會繼續生產了。 因為這樣的~~胡搞~~修改,打破一開始的七代設計,使得短編碼區不再遵循全英文的規則,而是變成==短編碼區必有一碼為英文==。而為了避免英數混淆搖,在之後無論是 `英數` 開頭、`數英` 開頭、 短編碼區結尾的車牌中,短編碼區移除掉 `I`、`O` 、`1` 、`0` 四個字元。換句話說,只有 `AI` 開頭的車牌存在,其餘 `A1` 開頭、`AI` 結尾、`A1` 結尾,都是不存在的。 不過,在短編碼區必有一碼為英文得這個規則,在==租賃車牌==這邊被打破過,曾出現過 ==數數數數-數數== 與 ==數數-數數數數== 兩種車牌,但這兩碼必是相同數字,且不使用 `11` 與 `00`。 <br> 而 `3-2` 與 `2-3` 這兩種格式的短編碼區也大抵適用上述 `2-4` 或 `4-2` 中的介紹。另外,拖車所使用的 `2-2` 與機車所使用的 `3-3`,有都存在兩編碼區互換狀況,且都打破全英文的規則。 <br> 最後在根據報導與介紹,有發生過 `B` 與 `8` 以及 `D` 與 `0` 被誤判的狀況,所以當預測結果出來時,若在數字區,出現 `B` 與 `D` 或許可以考慮用 `8` 或 `0` 還替換。 ### 第八代 第八代是目前主要的發行車牌,可在細分八代一式與八代二式,這等等在說。八代在推行之初有點像是急就章,不像七代在設計編碼時還做了大量研究與民意調查,雖然後來還是搞出一堆問題,不過好歹還是有做,但八代的編碼則是直接就在原格式中==加了一位區段碼==敷衍了事。 不過我想原本八代的特點應該在防偽,它們原先設計有三道防偽關卡,第一是分別是左上角的雷射標籤、車牌中間的浮水印,最後則是字體上的細刻。還要搭配車身的識別貼,看來能夠有效防止車牌的偽造及偷竊。 <p class="illustration"> <img src="https://i.imgur.com/11HVwgn.jpg" alt="印度最新版(2008年)統一號牌"> 印度最新版(2008年)統一號牌(圖片來源: <a href="http://khalidhazmi.hatenablog.com/entry/TW06">KH的車牌研究日記</a>) </p> 整體來說有點像是現在印度車牌的前身,當然沒有這麼多碼,印度這字元數也太多了吧 XDDD 但可惜的是,八代車牌唯一的優點,因為防偽技術的製作部分涉嫌綁標爭議,後來胎死腹中,只留下滿滿缺點(殘念 <p class="illustration"> <img src="https://i.imgur.com/QpTaHe9.gif" alt="第八代各車種號牌繪圖範例"> 第八代各車種號牌繪圖範例(圖片來源: <a href="https://zh.wikipedia.org/wiki/%E8%87%BA%E7%81%A3%E8%BB%8A%E8%BC%9B%E7%89%8C%E7%85%A7#cite_note-2">維基百科</a>) </p> #### 外觀 **1. 尺寸**: 一樣先看尺寸的部份,由於編碼擴增一碼,但字體寬度及鑄具排版不變的情況下,導致車牌寬度變寬為 `380 * 160` 、 `300 * 150` 、 `310 * 160` 與 `380 * 160` 四種,分別常見於自小客車、機車、重機與拖車和電動車上。 不過因為車牌寬度實在太寬,在機車上真的很容易傷到用路人,所以在八代二式中尺寸下修成 `380 * 160` 、 `260 * 140` 、 `300 * 150` 與 `380 * 160`。但也因為尺寸下導致容易變形,使得==字型更不易辨認==(M、N、W 與 V、Y)。而且這種誤認沒辦法使用規則修正,真的有點麻煩。 目前申請新號牌時是以八代二式為主,但一式並未被停用,且仍持續在發放,所以仍有機會收到八代一式的車牌資料。 <br> **2. 底色與文字顏色**: 在底色與文字顏色這邊,八代完全蕭規曹隨,沒有任何變動。 <br> **3. 字體**: 八代的字體為了防止偽造,因此改用了澳洲字體,但澳洲字體屬於比例字體,每個字的寬度有所差別;且臺灣是採用等寬字體鑄模,因此部份字元有==內縮==的的狀況,例如:M,這樣的內縮會導致特徵不清楚,在解析度低或是斜角度的照片,會增加辨識的困難度。 <p class="illustration"> <img src="https://i.imgur.com/JBmsSY8.png" alt="第七代與第八代字型對照"> 第七代與第八代字型對照(圖片來源: 待補) </p> 說是防偽,我懷疑選擇澳洲字體的原因只是為了讓 3 跟 8 有明顯區別,免得有人遮一半變造? 但個人覺得 0 跟 8 還是很好改阿...而且 0 跟 C 更好改。 七八代文字的相異特徵不算多,尤其是八代澳洲字體。對於機器學習來說,要它學習分辨八代澳洲字體的 3 跟 5 是件非常吃力的任務,從下圖可以發現這兩者只差了一個頸部筆劃,一束一撇的差異而已,但對於機器進行特徵提取的時候,這兩個幾乎是同一件事情,再加上 CNN 存在平移不變性,使得辨識難度大大提升。 <p class="illustration"> <img src="https://i.imgur.com/4bLIE9H.png" alt="澳洲車牌 3 和 5 的差異"> 澳洲車牌 3 和 5 的差異(圖片來源: <a href="https://www.tteia.org.tw/magazine/index.php?download_id=380">臺灣電信月刊</a>) </p> <br> 說到這個就不得不抱怨一下,為啥不換成六代的字型,辨識度比較高,也可以避免 3 與 8 的問題?若說是不想使用重複字型,且又想從現有字型當基底...德國車牌字體就是個不錯的選擇阿...每個字都有獨立特徵,不怕修改、變造與遮擋...當然車牌全擋了還是沒有救 XD <p class="illustration"> <img src="https://i.imgur.com/B38GxCZ.png" alt="德國車牌字體"> 德國車牌字體(圖片來源: <a href="https://dailycold.tw/4961/%E9%9B%A3%E4%BB%A5%E5%A1%97%E6%94%B9%E7%9A%84%E5%BE%B7%E5%9C%8B%E8%BB%8A%E7%89%8C%E5%AD%97%E9%AB%94/">每日一冷</a>) </p> #### 編碼格式 這邊分成一、二式來討論。 <br> 在八代一式車牌字元長度若不計算分隔符號的話為 ==5 到 7==,有 `3-4` 、 `3-3` 與 `2-3` 共六種格式。這套制度因歷時較短,所以目前現況都還符合設計之初的規劃。各規格對應的字元順序分別為 `英英英-數數數數`、 `英英英-數數數` 與 `英英-數數數`。 不過,八代一式在實務推廣上有非常大的問題,它與七代一樣採用==非全車種統一編碼==,也就是不同車種之間的編碼格式與順序是獨立的,但監理系統的設計卻是全車種統一編碼。 在七代時,因為所有車種的編碼格式不同(車牌長短不同),所以在監理系統上可以正常運作,但在八代中,如下圖,汽機車是採同一種編碼格式,編碼區間又相同,導致監理系統運作出錯。因此八代一式在運作初期開錯單的新聞時有所聞...一部分也是這個原因... <p class="illustration"> <img src="https://i.imgur.com/7IQ17KJ.png" alt="第八代通用車輛號牌編碼表"> 第八代通用車輛號牌編碼表(圖片來源: <a href="https://www.thb.gov.tw/page?node=92d4a6e2-9afb-464d-a2eb-2be8d26d8d89">交通部公路總局</a>) </p> 為什麼會說是只有一部份的原因,仔細觀察八代一式的編碼表碼會發現,它除了自身衝突外,它還跟上一代的編碼起衝突...八代一式的自用大貨車跟七代的機車編碼是重疊在一起的。真搞不懂,這麼明顯的錯誤怎麼會讓它立法通過的... 所以監理機關後來才又推出名為==一車一號==的八代二式,在八代二式中無論車種,一律以七碼格式取代(`英英英-數數數數`)。 <br> 不過,這些對於訓練模型這些因素影響不大,只是降低引入額外資訊所能帶來的效益。 <br> 最後,關於字元的使用,在八代(無論一、二式),都移除 `I` 、 `O` 與 `4` 三個字元,使得臺灣成為全世界唯一僅使用 9 個數字作為車牌數字部分編碼的國家。 但實做上,由於七代與八代一式的規則混雜在一起,因此再做後處理時可能僅能針對 `3-4` 這個編碼格式進行處理而已。 ## 備註 如果所設計的系統有錯誤處理或信心度不足的處理流程,可以考慮在引入[禁用英文字母部分](https://zh.wikipedia.org/wiki/%E8%87%BA%E7%81%A3%E8%BB%8A%E8%BC%9B%E7%89%8C%E7%85%A7#%E7%9B%B8%E9%97%9C%E8%AD%B0%E9%A1%8C),當預測結果出現在這列表中就打到錯誤處理流程去... ## 附件 <p class="illustration"> <img src="https://i.imgur.com/I9Bj7iv.png" alt="原型式、新式、「一車一號」新編碼方式號牌區分對照表"> 原型式、新式、「一車一號」新編碼方式號牌區分對照表(圖片來源: <a href="https://www.thb.gov.tw/page?node=92d4a6e2-9afb-464d-a2eb-2be8d26d8d89">交通部公路總局</a>) </p> ## 參考資料 1. 鄉下老師 (2018-07-07)。[車牌辨識當然是有地域性的](http://blog.udn.com/yccsonar/113103293) 。檢自 鄉下老師 - udn部落格 (2020-03-03)。 2. [歐沃車牌情報站](https://www.facebook.com/TaiwanLicensePlate/) 。檢自 FB 粉絲團 (2020-03-03)。 3. Khalid al-Hazmi。[車牌研究報告](https://medium.com/%E8%BB%8A%E7%89%8C%E7%A0%94%E7%A9%B6%E5%A0%B1%E5%91%8A) 。檢自 車牌研究報告 (2020-03-03)。 4. Khalid al-Hazmi (2017-09-18)。 [<#4> 淺談台灣車牌演進 IV](http://khalidhazmi.hatenablog.com/)。檢自 KH的車牌研究日記 (2020-03-03)。 5. Khalid al-Hazmi (2017-12-10)。 [<#6> 淺談台灣車牌演進 VI](http://khalidhazmi.hatenablog.com/)。檢自 KH的車牌研究日記 (2020-03-03)。 6. 協同撰寫。[臺灣車輛牌照](https://zh.wikipedia.org/wiki/%E8%87%BA%E7%81%A3%E8%BB%8A%E8%BC%9B%E7%89%8C%E7%85%A7) 。檢自 維基百科 (2020-03-03)。 7. 監理組車輛管理科 (2020-02-26)。[號牌型式及編碼規則表](https://www.thb.gov.tw/page?node=92d4a6e2-9afb-464d-a2eb-2be8d26d8d89) 。檢自 公路總局 (2020-03-03)。 8. 李建興等 (2010)。[即時動態車牌辨識](http://ir.lib.ntust.edu.tw/retrieve/50742/DYNAMIC+REAL-TIME+LICENSE+PLATE+RECOGNITION.pdf)。檢自 技術學刊 第二十五卷 第二期 (2020-03-03)。 9. cevasu (2015-04-10)。[難以塗改的德國車牌字體](https://dailycold.tw/4961/%E9%9B%A3%E4%BB%A5%E5%A1%97%E6%94%B9%E7%9A%84%E5%BE%B7%E5%9C%8B%E8%BB%8A%E7%89%8C%E5%AD%97%E9%AB%94/)。檢自 每日一冷 (2020-03-03)。 10. 周天蔚 (2019-08)。[細說車牌辨識原理與市場](https://www.tteia.org.tw/magazine/index.php?download_id=380)。檢自 臺灣電信月刊 (2020-03-03)。 <br><br> > **本文作者**: 辛西亞.Cynthia > **本文連結**: [辛西亞的技能樹](https://cynthiachuang.github.io/Taiwan-License-Plate-Rules-for-LPR) / [hackmd 版本](https://hackmd.io/@CynthiaChuang/Taiwan-License-Plate-Rules-for-LPR) > **版權聲明**: 部落格中所有文章,均採用 [姓名標示-非商業性-相同方式分享 4.0 國際](https://creativecommons.org/licenses/by-nc-sa/4.0/deed.en) (CC BY-NC-SA 4.0) 許可協議。轉載請標明作者、連結與出處!

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password
    or
    Sign in via Google Sign in via Facebook Sign in via X(Twitter) Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    By signing in, you agree to our terms of service.

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully