前回、高解像度の綺麗なデータを作る事ができたんや。 せやったらtesseract、結構いけるんちゃうか?って話やで。
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
(12)
(13)
番号 | 解答 | 正負 |
---|---|---|
(1) | 持 ち 家 | o |
(2) | ー 0 3 1 113 | x |
(3) | ー 773 0 53 5 3 | x |
(4) | 5 | o |
(5) | 252 | o |
(6) | 27 | o |
(7) | 230 | o |
(8) | 257 | o |
(9) | 285 | o |
(10) | 453 788 | x |
(11) | 1 | o |
(12) | 98 | o |
(13) | 6 | o |
やっぱ日本語は微妙やな。
数字はええ感じや!このサイズやったら問題ないっぽいな。
ただ「,」が認識できとらん。
小数点は認識できるんやろか?試してみよか。
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
番号 | 解答 | 正負 |
---|---|---|
(1) | 2,990 | o |
(2) | ー 906 | x |
(3) | 31. 5 | o |
(4) | 33. 4 | o |
(5) | 23. 8 | o |
(6) | 23. 3 | o |
(7) | 34. 6 | o |
(8) | 30. 2 | o |
(9) | 22. 9 | o |
(10) | 24. 6 | o |
小数点もとれるっぽいな!ええ感じやん。
ただ1個取れてないのがあるなあ。
・・・お、こんな感じで数字の部分だけ切り取ったらちゃんと読み込んだわ!
やっぱ数字の部分だけ切り取る処理を挟む必要がありそうやな。
さて、どう実装しよか。
凸包使うとかあるみたいやけど、数字は離れてるしなあ。 まあ、セルの一番左端と右端の白以外の画素の部分で切り取ったらええやろ!! 一応事前に2値画像に変えとるで!
left_pt = sys.maxsize
right_pt = 0
for row in imgray:
for index,val in enumerate(row):
if val == 255: continue
if left_pt > index: left_pt = index
if right_pt < index: right_pt = index
こんなんでええか。2重ループ嫌やけど、flatにしたらあかんからな。
で、実際には20pxくらいマージンを入れて切り取ったらこんな感じなるで。
ええ感じやな! 次は日本語はgoogleVisionAPIに、数字はこっちのOCRで振り分ける処理を書いて実験しなな。