画像化されている文字をテキストに変換する方法
2017/10/29 - moriya - ~4 Minutes
WEB サイトで画像化されている文字があって、ALT もセットされていない画像をテキストにしたいと思ったが、さすがに手入力はだるすぎる・・・(ALTから読み出すのも面倒だが。)
Google drive にアップロードして変換できるというような記事も見たが、いちいち保存してアップロードなんてめんどくさすぎる・・・
画像のURL(は右クリックでコピーされる)からテキストに変換するアプリでも作ろうかと思っていたが、そういえば、Google に OCR 機能があったなと思って調べた。Vision API だ。
画像の URL からファイルをダウンロードして、API に入れればテキストが返ってくるんだろうな、と思ってドキュメントを読んでいると、 サンプルコード が提供されていた。
Mac で試してみた。authentication の下に書かれてあるリンクを辿って、Creating the service account のとおりに設定し、落ちてきた json ファイルを保存。シェルから、
sudo pip3 -r requirement.txt
export GOOGLE_APPLICATION_CREDENTIALS=jsonファイルのパス
python3 detect.py text-uri URL
のようにすれば結果が返ってくる。おそらく Windows でも同様で、export のところが環境変数の設定に変わるだけだろう。
テキスト変換しようとしていた画像の変換結果はこうだ。
> python3 detect.py text-uri http://www.e-b-s.co.jp/herseries/img/LP_SLIM/c04_point_pc.png
Texts:
"あなたの食行動(高カロリー嗜好)の有無がわかります。
FTO
FTO
あなたに必要な栄養素が何なのかがわかります。
あなたが太りやすい食べ物の特徴がわかります。
ADRB3 UCPl
あなたに適した運動の種類がわかります。
UCPI
あなたの脂肪のつきやすい部位がわかります。
ADRB3 UCP1
あなたの基礎代謝が高いか、
低いかがわかります
ADRB3UCP1ADRB2
"
bounds: (98,35),(963,35),(963,660),(98,660)
"あなた"
bounds: (98,35),(181,35),(181,62),(98,62)
"の"
bounds: (187,38),(212,38),(212,60),(187,60)
"食"
bounds: (218,35),(243,35),(243,63),(218,63)
"行動"
bounds: (247,35),(303,35),(303,62),(247,62)
"("
bounds: (313,35),(321,35),(321,62),(313,62)
"高"
bounds: (325,35),(351,35),(351,63),(325,63)
"カロリー"
bounds: (357,36),(469,36),(469,61),(357,61)
"嗜好"
bounds: (474,35),(532,35),(532,62),(474,62)
")"
bounds: (535,36),(542,36),(542,62),(535,62)
"の"
bounds: (551,38),(576,38),(576,60),(551,60)
"有無"
bounds: (582,35),(636,35),(636,63),(582,63)
"が"
bounds: (640,37),(667,37),(667,61),(640,61)
"わかり"
bounds: (671,35),(751,35),(751,62),(671,62)
"ます"
bounds: (764,35),(815,35),(815,61),(764,61)
"。"
bounds: (820,55),(828,55),(828,63),(820,63)
"FTO"
bounds: (865,42),(903,42),(903,56),(865,56)
"FTO"
bounds: (928,42),(959,42),(959,56),(928,56)
"あなた"
bounds: (99,155),(181,155),(181,182),(99,182)
"に"
bounds: (188,157),(210,157),(210,180),(188,180)
"必要"
bounds: (216,155),(273,155),(273,182),(216,182)
"な"
bounds: (278,155),(302,155),(302,182),(278,182)
"栄養素"
bounds: (306,155),(392,155),(392,183),(306,183)
"が"
bounds: (397,157),(424,157),(424,180),(397,180)
"何"
bounds: (427,155),(453,155),(453,182),(427,182)
"な"
bounds: (459,155),(482,155),(482,182),(459,182)
"の"
bounds: (487,159),(512,159),(512,180),(487,180)
"か"
bounds: (517,156),(543,156),(543,180),(517,180)
"が"
bounds: (547,157),(574,157),(574,180),(547,180)
"わかり"
bounds: (577,155),(658,155),(658,182),(577,182)
"ます"
bounds: (671,155),(723,155),(723,181),(671,181)
"。"
bounds: (726,175),(733,175),(733,183),(726,183)
"あなた"
bounds: (98,275),(181,275),(181,302),(98,302)
"が"
bounds: (186,276),(214,276),(214,301),(186,301)
"太り"
bounds: (218,275),(267,275),(267,301),(218,301)
"やすい"
bounds: (277,274),(362,274),(362,301),(277,301)
"食べ物"
bounds: (367,274),(452,274),(452,302),(367,302)
"の"
bounds: (456,278),(482,278),(482,299),(456,299)
"特徴"
bounds: (486,274),(542,274),(542,302),(486,302)
"が"
bounds: (546,276),(573,276),(573,301),(546,301)
"わかり"
bounds: (576,275),(657,275),(657,301),(576,301)
"ます"
bounds: (670,274),(722,274),(722,301),(670,301)
"。"
bounds: (725,294),(734,294),(734,303),(725,303)
"ADRB3"
bounds: (866,284),(903,284),(903,292),(866,292)
"UCPl"
bounds: (930,284),(958,284),(958,292),(930,292)
"あなた"
bounds: (99,395),(181,395),(181,422),(99,422)
"に"
bounds: (188,397),(210,397),(210,420),(188,420)
"適し"
bounds: (215,395),(270,395),(270,422),(215,422)
"た"
bounds: (278,396),(301,396),(301,421),(278,421)
"運動"
bounds: (306,395),(363,395),(363,422),(306,422)
"の"
bounds: (367,399),(392,399),(392,420),(367,420)
"種類"
bounds: (396,395),(453,395),(453,422),(396,422)
"が"
bounds: (457,397),(484,397),(484,420),(457,420)
"わかり"
bounds: (487,395),(568,395),(568,422),(487,422)
"ます"
bounds: (581,395),(633,395),(633,421),(581,421)
"。"
bounds: (636,415),(644,415),(644,423),(636,423)
"UCPI"
bounds: (870,403),(897,403),(897,413),(870,413)
"あなた"
bounds: (99,515),(181,515),(181,542),(99,542)
"の"
bounds: (187,519),(213,519),(213,539),(187,539)
"脂肪"
bounds: (216,515),(273,515),(273,542),(216,542)
"の"
bounds: (277,519),(302,519),(302,539),(277,539)
"つき"
bounds: (307,515),(360,515),(360,542),(307,542)
"やすい"
bounds: (367,515),(453,515),(453,541),(367,541)
"部位"
bounds: (457,515),(512,515),(512,542),(457,542)
"が"
bounds: (517,517),(544,517),(544,540),(517,540)
"わかり"
bounds: (547,515),(628,515),(628,541),(547,541)
"ます"
bounds: (641,515),(693,515),(693,541),(641,541)
"。"
bounds: (696,535),(704,535),(704,543),(696,543)
"ADRB3"
bounds: (867,524),(903,524),(903,533),(867,533)
"UCP1"
bounds: (915,524),(955,524),(955,533),(915,533)
"あなた"
bounds: (99,633),(181,633),(181,660),(99,660)
"の"
bounds: (187,636),(212,636),(212,658),(187,658)
"基礎"
bounds: (218,633),(273,633),(273,660),(218,660)
"代謝"
bounds: (277,633),(334,633),(334,660),(277,660)
"が"
bounds: (336,635),(363,635),(363,658),(336,658)
"高い"
bounds: (367,633),(422,633),(422,660),(367,660)
"か"
bounds: (427,634),(453,634),(453,658),(427,658)
"、"
bounds: (457,653),(464,653),(464,660),(457,660)
"低い"
bounds: (486,633),(542,633),(542,660),(486,660)
"か"
bounds: (546,634),(573,634),(573,658),(546,658)
"が"
bounds: (577,635),(603,635),(603,658),(577,658)
"わかり"
bounds: (607,633),(687,633),(687,659),(607,659)
"ます"
bounds: (701,633),(753,633),(753,659),(701,659)
"ADRB3UCP1ADRB2"
bounds: (807,642),(963,642),(963,651),(807,651)
すごすぎる。十分使える。
領域の座標らしきものが返ってきているので、変換単位で移動させたりといったアプリケーションも考えられるのかもしれない。
もう、ALT も設定しなくていいのかもしれない・・・