はじめに
小説などを読んでいると時々見たことのない単語に出会すことがあります.
最近だと
「傴僂」 「聯関」 「偏頗」
などに遭遇し,困りました.
全く知らない単語に出会した時,読み仮名がふってあれば良いのですが,ない場合も多く,そうなると検索が非常に困難です(紙だと単語コピーもできない).傴をにんべん口三つなどとググったのは黒歴史です,
手書きで漢字を判定するアプリはよくありますが,細かい漢字を指で書くのは面倒なので写真でできないかなと思い,ネイティブアプリでのOCRを検証してみました. 検証の対象としては,OCRエンジンとして有名そうなTesseractのswift版であるSwiftyTesseract,Cloud Vision APIの一部として提供されているOCR APIを利用しました.
検証内容
与えるデータ
まず,一般に認知されてる少し複雑な単語として以下を試します.単語の認識ソースとしては,ググって出てきたwebページを撮影し,単語箇所を切り抜いたものを利用します.
「溢れる」 「詳細」 「鬱病」
次に,あまり日常生活で見ない単語である
「傴僂」 「聯関」
を試してみます.
最後に,OCRはそもそも単語でなく文章を読み取るためのものな気がするので,新潮文庫より出版されている小説「金閣寺」(三島由紀夫著)の裏表紙のあらすじを与えてみます.
使うモデル
モデルとしては以下を利用します
実装の参考は以下
結果
単語の読み取り
Tesseract Best | Tesseract Fast | CVA | |
---|---|---|---|
処理時間 | 一瞬 | 一瞬 | 1秒 |
溢れる | OK | OK | OK |
詳細 | OK | OK | OK |
鬱病 | OK | OK | OK |
傴僂 | 価 佑 | 偏優 | 區傻 |
聯関 | 職 関 | 隊関 | OK |
一般的に認知されている単語についてはどれも正確に読み取ることができた
認知度の低い単語については,Vision APIはTesseractより秀でているようです(傴僂についても近い漢字を出せている).モデルの質よりは学習データ上の語彙数とかの問題な気がする.
文章の読み取り
Tesseract Fast
処理時間:1,2秒ほど
一九五〇年七月一日、「国宝・金剛 寺焼失。放火犯人は寺の青年信」 と いう衝撃のニュースが世人の耳目を 驚かせた。この事件の陰に潜められ た若い学僧の悩みーーハンディを背 負った宿命の子の、生への消しがた い呪いと、それゆえに金開の美の魔 力に魂を要われん、ついには幻想と心 中するにいたった悲劇……。31歳の 鬼オ三島が全青春の決算として告白 体の名文に組った不朽の金字塔。
精度に関しては所々間違うところはあるが,長文においても処理が速いのは魅力的.
Tesseract Best
処理時間:10秒ほど
ー 九 五 〇 年 七 月 一 日 、「 国 宝 ・ 金 閣 寺 焼 失 。 放 火 犯 人 は 寺 の 青年 僧 」 と いう 衝撃 の ニュ ー ス が 世 人 の 耳目 を 藻 か せ た 。 こ の 事件 の 陰 に 潜め られ た 若い 学 僧 の 悩み ーー ハン ディ を 背 負っ た 宿命 の 子 の 、 生 へ の 消し が た い 上 呪い と 、 そ れ ゆ え に 金閣 の 美 の 訂 力 に 魂 を 奪わ れ 、 つ い に は 幻想 と 心 中 する に いた っ た 悲劇 ……。31 歳 の 鬼 オ 三島 が 全 青春 の 決算 と し て 告白 体 の 名 文 に 綴っ た 不朽 の 金 字 護 。
単語間に空白が混ざるが,精度に関しては2,3箇所間違える程度.
Cloud Vision API
処理時間:7秒ほど
一九五○年七月一日、「国宝 金閣\n寺焼失。放火犯人は寺の青年僧」 と\nいう衝撃のニュースが世人の耳目を\n驚かせた。この事件の陰に潜められ\nた若い学僧の悩み ハンディを背\n負った宿命の子の、生への消しがた\nい呪いと、それゆえに金閣の美の魔\n力に魂を奪われ、ついには幻想と心\n中するにいたった悲劇 。31歳の\n鬼才三島が全青春の決算として告白\n体の名文に綴った不朽の金字塔。\n
精度に関しては完璧.