前往
大廳
主題

【程式設計練習】python OCR

需要冷氣支援 | 2021-07-22 19:53:18 | 巴幣 3028 | 人氣 611

久違的發一下文記錄一下,暑假ㄌ,可是一點都沒有暑假的感覺,每天都要上4個多小時的課QQ
而且也好久沒有coding了,剛好前陣子都在玩Hgame但是很多都沒有翻譯,所以遇到要查的單字的時候,都要用鍵盤打來查,好麻煩,網路上的ocr又功能很多阿里阿雜的,只好自己寫一個試看看效果怎模樣ㄌ。

這次想說大家都說python套件很多很方便,所以就想用python來寫寫看。
首先我是用tkinter來實作介面,先用一個半透明視窗蓋住螢幕,然後用做事件的綁定和處理,像是左鍵按下去拖拉算出框框大小:
還有用canvas做出圖像處理後的預覽圖和scale做出閾值的即時調整 - toolbox:
當然,預覽圖要做成可以拖拉的,所以區域小也可以大概看個整體
接下來圖像要處理OCR的準確度才會有值的飛躍這時候就要用到另一個model - pillow
先將框起來的部分作灰階處理,之後依照閾值做極端的處理
算法用的是 gray = (r*30+g*59+b*11+50)//100 因為聽說整數處理速度比較快所以這樣寫
閾值 = 85                                 閾值 = 114
通常字和背景的顏色在做同一件事時不會變太多,所以只要第一次調一下就好ㄌ,決定好後按下又見就會將辨識出的文字複製到剪貼簿,然後直接在deepL貼上就好啦
之後加上keyboard做熱鍵偵測和ini檔的讀取參數如toolbox大小OCR轉換的目標語言等等

接下來介紹OCR引擎,我是使用tesseract來當作OCR引擎所以如果要使用這個要先裝tesseract然後看你要偵測幾種語言在安裝時記得要勾選,如果覺的不準可以在去網路上找別人的traningData來用。

之後用pyinstall打包成exe就可以到處用拉,雖然還有小功能我想搞像是顯示程式目前有沒有在後台執行之類的不過之後再說ㄅ。

這次困擾我最久的就是預覽圖了搞我好久= =,還有我也不知道熱鍵設啥比較好所以就決定
shift+esc退出程式
print screen截圖
esc退出截圖環節
然後有沒有人知道tkinter要用canvas顯示image要怎麼寫才不用一開始就要給他一個圖才能建立R?
經過這次我更熟悉python的細節雖然有很大一部分多虧了stackoverflow的幫忙。
最後展示一下應用在galgame上的成果,把辨識出的字貼在記事本上:
就醬ㄅㄅ
對了 這篇縮圖是fubuki的原因是我看網路上pillow還是tkinter只能處理/show出.gif可是我手邊只有這張結果那好像是舊版的事了,所以用來測試的這張就變這篇的縮圖ㄌ

恭喜pekora 2周年 作者>>>>>Ruien<<<<<

創作回應

Wax_Apple
プログラミングつよつよ
2021-07-22 20:04:53
需要冷氣支援
Noot Noot!
2021-07-24 20:17:03
某菇喵君
https://truth.bahamut.com.tw/s01/202107/4b3398b025b66221ebfb32a7e54e16bb.JPG マジやばくね
2021-07-22 20:11:22
需要冷氣支援
https://truth.bahamut.com.tw/s01/202107/1cb7b9d232675535048564baedb1a4b7.JPG
2021-07-24 20:18:19
某菇喵君
https://media1.tenor.com/images/be90af45acab2861aa203dd33da96829/tenor.gif
2021-07-24 20:23:03

更多創作