SlideShare a Scribd company logo
Submit Search
Upload
Login
Signup
オープンソースで作るスマホ文字認識アプリ
Report
陽平 山口
Follow
有限会社来栖川電算 事業主 at 有限会社来栖川電算
May. 12, 2012
•
0 likes
•
79,444 views
1
of
44
オープンソースで作るスマホ文字認識アプリ
May. 12, 2012
•
0 likes
•
79,444 views
Download Now
Download to read offline
Report
Technology
OpenCV・NHocrを使った文字認識アプリの作り方を解説します。
陽平 山口
Follow
有限会社来栖川電算 事業主 at 有限会社来栖川電算
Recommended
【DL輪読会】言語以外でのTransformerのまとめ (ViT, Perceiver, Frozen Pretrained Transformer etc)
Deep Learning JP
3.6K views
•
52 slides
全力解説!Transformer
Arithmer Inc.
9K views
•
43 slides
Word2vecの並列実行時の学習速度の改善
Naoaki Okazaki
19.4K views
•
21 slides
ResNetの仕組み
Kota Nagasato
60.1K views
•
17 slides
Active Learning 入門
Shuyo Nakatani
51.5K views
•
60 slides
最近のDeep Learning (NLP) 界隈におけるAttention事情
Yuta Kikuchi
72.1K views
•
76 slides
More Related Content
What's hot
[解説スライド] NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis
Kento Doi
2.7K views
•
23 slides
Sequence Level Training with Recurrent Neural Networks (関東CV勉強会 強化学習論文読み会)
Yoshitaka Ushiku
3.4K views
•
38 slides
機械学習で泣かないためのコード設計 2018
Takahiro Kubo
27.8K views
•
52 slides
20090924 姿勢推定と回転行列
Toru Tamaki
26K views
•
34 slides
Depth Estimation論文紹介
Keio Robotics Association
2.8K views
•
14 slides
Transformerを雰囲気で理解する
AtsukiYamaguchi1
4.7K views
•
37 slides
What's hot
(20)
[解説スライド] NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis
Kento Doi
•
2.7K views
Sequence Level Training with Recurrent Neural Networks (関東CV勉強会 強化学習論文読み会)
Yoshitaka Ushiku
•
3.4K views
機械学習で泣かないためのコード設計 2018
Takahiro Kubo
•
27.8K views
20090924 姿勢推定と回転行列
Toru Tamaki
•
26K views
Depth Estimation論文紹介
Keio Robotics Association
•
2.8K views
Transformerを雰囲気で理解する
AtsukiYamaguchi1
•
4.7K views
不均衡データのクラス分類
Shintaro Fukushima
•
58.8K views
研究発表のためのプレゼンテーション技術
Shinnosuke Takamichi
•
160.8K views
semantic segmentation サーベイ
yohei okawa
•
4.7K views
サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23
Masashi Shibata
•
11.1K views
Masked Autoencoders Are Scalable Vision Learners
GuoqingLiu9
•
359 views
[DL輪読会] “Asymmetric Tri-training for Unsupervised Domain Adaptation (ICML2017...
Yusuke Iwasawa
•
5.3K views
【メタサーベイ】数式ドリブン教師あり学習
cvpaper. challenge
•
5.3K views
SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~
SSII
•
20.7K views
先端技術とメディア表現1 #FTMA15
Yoichi Ochiai
•
869.9K views
Tensor コアを使った PyTorch の高速化
Yusuke Fujimoto
•
7.7K views
転移学習ランキング・ドメイン適応
Elpo González Valbuena
•
1.1K views
ウェーブレット変換の基礎と応用事例:連続ウェーブレット変換を中心に
Ryosuke Tachibana
•
80.8K views
【DL輪読会】Bridge-Prompt: Toward Ordinal Action Understanding in Instructional Vi...
Deep Learning JP
•
417 views
畳み込みニューラルネットワークの研究動向
Yusuke Uchida
•
138.3K views
Similar to オープンソースで作るスマホ文字認識アプリ
【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう
Yasuhiro Yoshimura
16.4K views
•
36 slides
2008.10.18 L4u Tech Talk
mitamex4u
2.3K views
•
78 slides
Introduction of Python
Tomoya Nakayama
1.2K views
•
45 slides
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
Hiroh Satoh
49.2K views
•
91 slides
【関東GPGPU勉強会#2】OpenCVのOpenCL実装oclMat
Yasuhiro Yoshimura
15.7K views
•
57 slides
OpenCVをAndroidで動かしてみた
徹 上野山
139.3K views
•
32 slides
Similar to オープンソースで作るスマホ文字認識アプリ
(20)
【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう
Yasuhiro Yoshimura
•
16.4K views
2008.10.18 L4u Tech Talk
mitamex4u
•
2.3K views
Introduction of Python
Tomoya Nakayama
•
1.2K views
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
Hiroh Satoh
•
49.2K views
【関東GPGPU勉強会#2】OpenCVのOpenCL実装oclMat
Yasuhiro Yoshimura
•
15.7K views
OpenCVをAndroidで動かしてみた
徹 上野山
•
139.3K views
ゆるかわPhp
Ryota Mochizuki
•
1.1K views
つぶLT20121215
遼一 杉浦
•
242 views
C・C++用のコードカバレッジツールを自作してみた話
simotin13 Miyazaki
•
465 views
1.29.user,user,user
Tonny Xu
•
884 views
ロボット用Open Source Software
たけおか しょうぞう
•
3.6K views
.NETの自作ツール公開手段
Pierre3 小林
•
189 views
Adobe JSX入門
silvers ofsilvers
•
2.8K views
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
ThinReports
•
6.5K views
RとWeb API
Yohei Sato
•
11.5K views
HCL Nomad と OCR
Haruyuki Nakano
•
3.7K views
T69 c++cli ネイティブライブラリラッピング入門
伸男 伊藤
•
5.2K views
Vision-and-Language Navigation: Interpreting visually-grounded navigation ins...
Yoshitaka Ushiku
•
2.4K views
20120118 titanium
Hiroshi Oyamada
•
1.9K views
13016 n分で作るtype scriptでnodejs
Takayoshi Tanaka
•
2.3K views
More from 陽平 山口
NGK2023S ChatGPT
陽平 山口
291 views
•
20 slides
JAWS DAYS 2022
陽平 山口
71 views
•
95 slides
NGK2022S
陽平 山口
128 views
•
56 slides
KCI PROFILE 2021-10-07
陽平 山口
394 views
•
38 slides
JAWSUG 20210128
陽平 山口
681 views
•
57 slides
AWS Webinar 20201224
陽平 山口
1.1K views
•
72 slides
More from 陽平 山口
(20)
NGK2023S ChatGPT
陽平 山口
•
291 views
JAWS DAYS 2022
陽平 山口
•
71 views
NGK2022S
陽平 山口
•
128 views
KCI PROFILE 2021-10-07
陽平 山口
•
394 views
JAWSUG 20210128
陽平 山口
•
681 views
AWS Webinar 20201224
陽平 山口
•
1.1K views
SIAI2020
陽平 山口
•
719 views
MISO20200530
陽平 山口
•
1.8K views
ML@Loft 20200430
陽平 山口
•
2.5K views
JAWS FESTA 20191102
陽平 山口
•
1.3K views
JAWSUG 20191028 (modified)
陽平 山口
•
884 views
JAWSUG 20191028
陽平 山口
•
387 views
JAWSUG 20190828
陽平 山口
•
1.1K views
AI Utilization Seminar 20190709
陽平 山口
•
704 views
JAWSUG 20190620
陽平 山口
•
755 views
JAWS DAYS 2019
陽平 山口
•
3.3K views
JAWS FESTA 2018 OSAKA AHAB
陽平 山口
•
2K views
JAWS FESTA 2018 OSAKA KCI SESSION
陽平 山口
•
1.6K views
NAGOSUTA 20181020
陽平 山口
•
1.4K views
JAWSUG20180925
陽平 山口
•
523 views
Recently uploaded
20230921_IoTLT_vol103_kitazaki_v1.pdf
Ayachika Kitazaki
164 views
•
16 slides
CCoE実践者コミュニティ#1_CCoEが進めるセキュリティカイゼンの旅.pptx
Tomoaki Tada
57 views
•
20 slides
磁石内臓イヤリングによる磁力変化を利用したジェスチャ識別
sugiuralab
7 views
•
1 slide
MLOps Course Slides_JP(配布用).pdf
Yuya Yamamoto
118 views
•
31 slides
CatBoost on GPU のひみつ
Takuji Tahara
548 views
•
30 slides
拡散する画像生成.pdf
NTTDOCOMO-ServiceInnovation
44 views
•
38 slides
Recently uploaded
(14)
20230921_IoTLT_vol103_kitazaki_v1.pdf
Ayachika Kitazaki
•
164 views
CCoE実践者コミュニティ#1_CCoEが進めるセキュリティカイゼンの旅.pptx
Tomoaki Tada
•
57 views
磁石内臓イヤリングによる磁力変化を利用したジェスチャ識別
sugiuralab
•
7 views
MLOps Course Slides_JP(配布用).pdf
Yuya Yamamoto
•
118 views
CatBoost on GPU のひみつ
Takuji Tahara
•
548 views
拡散する画像生成.pdf
NTTDOCOMO-ServiceInnovation
•
44 views
ヒアラブルデバイスにおける音漏れ信号を用いた空中ジェスチャ認識
sugiuralab
•
5 views
テスト自動化.pdf
ssuserf8ea02
•
29 views
2023情報処理学会関西支部大会-G12.pdf
KoseiShimoda1
•
7 views
IGDA Japan SIG Audio #20-1 室内・野外でのマイク収録と整音.pdf
IGDA Japan SIG-Audio
•
115 views
画像生成AIの問題点
iPride Co., Ltd.
•
10 views
遠隔お酌IoTLT2309.pptx
Yoshiaki Ito
•
145 views
インフラチームとCCoEの関係.pptx
ssuser5c7ee4
•
20 views
GraphQLはどんな時に使うか
Yutaka Tachibana
•
14 views
オープンソースで作るスマホ文字認識アプリ
1.
有限会社
来栖川電算 山口陽平 オープンソースカンファレンス名古屋2012
2.
あじぇんだ
自己紹介 はじめに 紹介するOSS 設計 実装 ??? まとめ 参考文献
3.
自己紹介
山口陽平 有限会社来栖川電算
4.
山口陽平
プログラミング言語・型理論の研究者 世界を美しく記述することを夢見る33歳 名古屋工業大学大学院出身 未踏ソフトウェア経験 人を驚かせるのが好き Nativeコードより速いJavaコード 1日でHaskellを作る ハードリアルタイムJavaVM 1000台越え構成のペタバイト級分散DB PC上で秒間1000万クエリ処理できるKVS ※あくまでもイメージです。 実物に髪の毛はありません。
5.
有限会社来栖川電算
概要 名古屋工業大学発ベンチャー(2003年) 目的 ソフトウェアの品質・生産性向上 スタッフ 役員3人・正社員7人・アルバイト9人 データ作成4人・家政婦2人 IPA未踏ソフトウェア経験者多数 社風 職人・挑戦・自由 イオン千種・名大病院・名工大の間 昼食・夕食・飲み会は無料
6.
はじめに
何を作るの? 準備するもの 取り組む姿勢
7.
何を作るの?
スマホで撮影した写真から単語を抽出するアプリ
8.
準備するもの
スマホ 開発環境 Android 2.3 サーバと同じソフト サーバ android-sdk_r18 Scientific Linux 6.2 Eclipse Indigo JavaEE IDE Java SE 7 for Web Developers. CDT Apache Tomcat 7.0 ADT OpenCV-2.2.0 O2-tools-2.00 ここを紹介するよ! nhocr-0.20
9.
取り組む姿勢
考慮すること 動くこと 分かりやすさ 考慮しないこと 認識精度 安全性 信頼性 可用性 拡張性
10.
紹介するOSS
OpenCV NHocr & O2-tools
11.
OpenCV
元はインテル製の画像処理ライブラリ APIが単純で割と使いやすい 様々な画像(※GIF除く)の読み書きに便利 様々な分野のアルゴリズムを網羅 画像処理・特徴抽出とディスクリプタ抽出 クラスタリング・多次元空間探索・オブジェクト検出 ビデオ解析・カメラキャリブレーション・姿勢推定 ステレオ・機械学習 サイト 【公式】http://opencv.willowgarage.com/ 【日本コミュニティ】http://opencv.jp/
12.
NHocr & O2-tools
日本語OCR・画像処理ライブラリ 一文字認識の認識精度はわりとよい 一応、行認識もできる コマンドラインツールがある 画像ファイルの文字認識・フォントからの辞書作成 あ 本格的に使うにはわりと改良がいる コード量が少ないので難しくはない サイト 【後藤研究室】http://www.imglab.org/ 注意 一部をコメントアウトしないとビルドできない場合が
13.
設計 概要(もう一度)
スマホアプリ 文字認識サービス 文字認識コマンド
14.
概要
スマホで撮影した写真から単語を抽出するアプリ
15.
スマホアプリ
マッシュアップでシンプルに! 主な作り込みは単語抽出(言語処理)だけ
16.
文字認識サービス
中継するだけ! 主な作り込みは文字認識コマンドの中
17.
文字認識コマンド
OepnCV・NHocrのAPIはシンプルで使いやすい! 難しいのは文字領域抽出だけ
18.
実装 画像読込
二値化 文字領域抽出 文字認識 XML出力 言語処理
19.
画像読込
OpenCVなら画像の読み書きが簡単! BMP DIB JPEG JPG JPE PNG PBM PGM PPM SR RAS TIFF TIF #include <opencv/cv.h> #include <opencv/highgui.h> int main() { IplImage* tImage = cvLoadImage("input/club_adriana.jpg", CV_LOAD_IMAGE_COLOR); cvNot(tImage, tImage); cvSaveImage("output/not_club_adriana.png", tImage); cvReleaseImage(&tImage); return 0; }
20.
二値化
OpenCVには基本的な二値化アルゴリズムがある! cvThreshold:与えた閾値で二値化する。(大津の方法も) cvAdaptiveThreshold:近傍の平均から閾値を決める。 #include <opencv/cv.h> #include <opencv/highgui.h> int main() { IplImage* tImage = cvLoadImage( "input/club_adriana.jpg", CV_LOAD_IMAGE_GRAYSCALE); ライトが IplImage* tBinarizedImage = cvCreateImage( 当たって cvGetSize(tImage), tImage->depth, tImage->nChannels); いるとな cvAdaptiveThreshold(tImage, tBinarizedImage, 256, CV_ADAPTIVE_THRESH_MEAN_C, CV_THRESH_BINARY, 19); かなかう cvSaveImage("output/binarized_club_adriana.png", まくいか tBinarizedImage); ない cvReleaseImage(&tBinarizedImage); cvReleaseImage(&tImage); return 0; }
21.
文字領域抽出
ヒストグラムで文字がある場所を見つけるぞ! ぐるぐるループしながら四則演算するだけ 行の上下に余分なものが写っているとうまくいかない
22.
文字認識
#include <opencv/cv.h> NHocrなら文字認識が簡単! #include <opencv/highgui.h> #include <siplib.h> ①辞書の選択・初期化など #include <nhocr.h> int main() { NHrec tNHrec; ascii+(英数字) tNHrec.setlibdir( jpn(日本語) (char*) "/usr/local/moji/nhocr-0.20/share/"); tNHrec.setdiccodes((char*) "ascii+"); ユーザ辞書 tNHrec.open(); IplImage* tImage = cvLoadImage("input/Ao.png", ②画像形式の変換 CV_LOAD_IMAGE_GRAYSCALE); SIPImage* tSIPImage = createSIPImage(tImage); OpenCV ⇒ NHocr int tCount = 10; RecResultItem tCondidates[tCount]; ③文字認識 tNHrec.rec_character(tSIPImage, 0, 0, tImage->width, tImage->height, tCondidates); 入力 for (int tIndex = 0; tIndex < tCount; tIndex++) 文字の場所 printf("%c:%f¥n", (char)tCondidates[tIndex].id, tCondidates[tIndex].dist); 出力 sip_DestroyImage(tSIPImage); cvReleaseImage(&tImage); {文字:距離, ..., 文字:距離} tNHrec.close(); return 0; }
23.
XML出力
各文字領域は複数の候補を持つ 各候補は文字と距離を持つ <result> <candidates> <candidate><character>H</character><distance>1</distance></candidates> <candidate><character>4</character><distance>2</distance></candidates> </candidates> <candidates> <candidate><character>O</character><distance>1</distance></candidates> <candidate><character>0</character><distance>2</distance></candidates> </candidates> <candidates> <candidate><character>M</character><distance>1</distance></candidates> <candidate><character>m</character><distance>2</distance></candidates> </candidates> <candidates> <candidate><character>U</character><distance>1</distance></candidates> <candidate><character>u</character><distance>2</distance></candidates> </candidates> </result>
24.
言語処理
様々な言語処理 距離の和が最も小さいパスを選ぶ。 文字種を限定する。 記号・数字・英字(大・小)・かな・カナ・漢字 辞書に含まれている単語だけを選ぶ。 文法にあうパスを選ぶ。 正規表現・文脈自由・自然言語
25.
簡単に使えるけど それ以外が難しい
AdaptiveThresholdもあんまり使えない ヒストグラム使った文字領域抽出が話にならない 1位だけを採用する言語処理でも話にならない
26.
まだまだ利用申請できるよ!どんどんしてね!
recognize.jp WebAPIで画像をPOSTするだけ 難しいことは全部サーバでやってくれる!
27.
タンゴチュウが (前より)賢くなった!
4月のrecognize.jpのアップデートで目に見えて良くなったぞ! 1年前とくらべて・・・ 4倍 の賢さだ!
28.
情
文 景 画 字 像 か 認 ら 識 の サ ー http://tangochu.jp ビ 説明前に宣伝させて! ス
29.
タンゴチュウとは
写真(情景画像)から単語を抽出 例えば メニュー チラシ お菓子のパッケージ レシート 名刺 看板 …
30.
情景画像の文字認識とは
31.
情景画像の文字認識とは
32.
情景画像の文字認識とは
従来のOCRとは戦場が違う 悪環境下での文字認識 手書き・様々な書体・かすれ・点描・きつい パース・統一性のない並び・逆光・陰・影・グ ラデーション・モアレなど 目指すはこんなかっこいい世界!
33.
タンゴチュウ
for Twitter 手軽に文字認識を体験できる! @tcfox
34.
タンゴチュウ
for Twitter 手軽に文字認識を体験できる!
35.
タンゴチュウ
for Evernote 写真の検索・整理に役立つ!
36.
0.0
1.0 2.0 3.0 4.0 5.0 6.0 7.0 2011年06月 2011年07月 2011年08月 2011年09月 2011年10月 4倍の賢さ・6倍の速さ 着実に進化している! 2011年11月 2011年12月 2012年01月 情景画像文字認識ではトップクラス 2012年02月 性能推移 2012年03月 2012年04月
37.
カスタマイズOK
棚卸し・検査・電子辞書などに 用途を限定すると非常に高精度 既に稼働していて、驚くほど高性能 出版系・測量系からも引き合いがきているぞ! Android端末 への組み込み もやってるよ
38.
とにかくアクセス!
萌えキャラたちも待ってるぞ! http://tangochu.jp
39.
まとめ
オープンソースを活用すれば とりあえず動くものは作れる 性能がでるかは腕次第 recognize.jpを使えば割とよい 今回のスマホアプリのソースコードは ダウンロードできるようにしておくよ!
40.
参考文献
リンクとか
41.
参考文献①
Scientific Linux http://www.scientificlinux.org/ Jave SE http://www.oracle.com/technetwork/java/ Apache Tomcat http://tomcat.apache.org/ Android SDK & ADT (Eclipse Plugin) http://developer.android.com/index.html Eclipse & CDT http://www.eclipse.org/
42.
参考文献②
OpenCV http://opencv.willowgarage.com/ 【日本コミュニティ】http://opencv.jp/ O2-tool http://www.imglab.org/p/O2/ NHocr http://code.google.com/p/nhocr/
43.
参考文献③
recognize.jp(情景画像文字認識API) http://recognize.jp/ 撮って文字入力(文字認識IME) http://www.nttdocomo.co.jp/smt/service/trial/trial_app/to tte_moji/index.html タンゴチュウ(情景画像文字認識サービス) http://tangochu.jp/ 来栖川電算 http://kurusugawa.jp/
44.
ご清聴ありがとうございました
どんどん賢くするので応援してね