創作世界のいろいろ〜AdobeとかC#とか

絵を描く人がC#とか3Dとか動画編集とかやる為の備忘録

【Unity + AI】写真から手書きのメモを読み取りテキスト化する

いわゆるOCRをUnityでできないかと思って試しました。

 

【結論】

Microsoft Azure の Cognitive Servicesを使ってできました。

Azureのサービスを他でも個人的に使ってるからAzureに寄っただけで、多分別の方法でも色々あるとは思います。

 

【使用例】

たとえば、こんなフセンがデスクに貼られていたとします。

色々な種類の文字を入れたくて奇妙な伝言になってます

 

下記の方の動画を参考にしながらAPIを呼び出しました。

www.youtube.com

同じ方が公開されてるデモをGitHubからDLします。

UnityからRESTful APIを呼び出せるプロジェクトです。

github.com

 

DLしたプロジェクトを開くと、「RestClientAzureDemo」というSceneがあるのでそれを開きます。

それに、RestwebClientというオブジェクトにアタッチされたRestClientExample.csがあるので、情報が古くなってる部分をMicrosoftのサイトを参考に修正します。

learn.microsoft.com

例えば、ここを、

    private string baseUrl = "https://westcentralus.api.cognitive.microsoft.com/vision/v2.0/ocr?language=unk&detectOrientation=true";

こうします

"https://(ENDPOINT)/computervision/imageanalysis:analyze&api-version=2023-02-01-preview&features=read&language=ja"

あと、日本語を取得したいのでとりあえず今回はレガシーのTextを追加しておいて、

このプロジェクトだと、Responce.csでクラスを定義していて、その中のDataに結果が格納されるみたいなので、

 

using System.Collections.Generic;

namespace RestClient.Core.Models
{
    public class Response
    {
        public long StatusCode { get; set; }

        public string Error { get;set; }

        public string Data { get; set; }  

        public Dictionary<string, string> Headers {get; set;} 
    }
}

追加したテキストにResponce.Dataを入れるコードを追記します。

jpWordsCapture.text = response.Data;

このデモではデシリアライズできるようにクラスも定義されてるのですが、情報が古いので、今のと対応するクラスを作り直さないといけなさそうです。

今回はそこまでやらずにテキストに羅列するだけです。あとJsonの取り扱いが未だ慣れてない素人なので私

 

で、先ほどの手書きメモの写真をアップしてURLを指定しておきます。

 

起動を押すと、

あの殴り書きのメモでも、ちゃんと日本語が読み取れてます!!!

 

【答え合わせ】

こう書いてあります↓

お疲れ様です。

7/20 13:15頃

タナカ様(中田物産)

より入電有

ゴッドファーザーⅡの感想

お待ちのようです。

    松ノ木

 

結果を見てみます。(みやすく改行しています。)

お疲れ様です。\n

7/20 13:15頃\n

タナカ様(中田物産)\n

より入電有\n

ゴッドファーザーⅡの感想\n

お待ちのようです。\n

松ノ木

 

一字一句間違ってませんでした!

改行コードもつけてくれてます、、

 

対話型AIに対して従来の分析と学習をするAIが話題にのぼらないですが触ってみたらめちゃくちゃ便利ですごいなぁと思いました。

私みたいな普段全くプログラミングに関係ない仕事してるど素人でもここまでできちゃうのがすごい。