文字認識した単語の画像を表示する

7 views (last 30 days)
竣 齊藤
竣 齊藤 on 31 Jul 2021
Commented: 竣 齊藤 on 29 Aug 2021
はじめに成分表示が英語で記載されている画像を読み込ませます。その成分表示の画像の中に、添付した画像のwordの列の英単語があったとき、日本語訳とその日本語訳のイラストの画像を表示するプログラムを作成しています。
[file,path,indx] = uigetfile({'*.*'});
selectedfile = fullfile(path,file);
businessCard=imread(selectedfile);
results=ocr(businessCard);
%cell化
Ninshikimoji=results.Words;
%小文字に統一
Ninshikimoji=lower(Ninshikimoji);
%辞書の読み込み
Jisho = readtable('allergy.xlsx','ReadRowNames',true);
%ループに際し、条件付与
%カテゴロジカル化
word=categorical(Jisho.word);
%ループ数
n=0;
Shoukaisu=size(Ninshikimoji,1);
Mininshiki=blanks(0);
while 1
%cellから文字を抽出、今回は一文字目のみ(n,1)
n=n+1;
Chushutumoji=Ninshikimoji{n,1};
% 検索して無ければFalseあれば表示
if sum(categorical(word)== Chushutumoji)
Shoukai = Jisho(Chushutumoji,:);
disp(Shoukai)
else
shinki=Chushutumoji;
Mininshiki = [Mininshiki ' ' shinki];
end
%認識数と同じになったらループ脱出
if n==Shoukaisu
break
end
end
現状は、成分表示が英語で記載されている画像から、添付した画像のwordの列の英単語があった時、日本語訳をコマンドウィンドウで表示するところまでは完了しています。
今回、ご教授して頂きたい点は、日本語訳をコマンドウィンドウに表示するのではなくテキストボックスに表示するという点と、日本語訳のイラストの画像を表示するという点となります。イラストの画像はパソコンのフォルダー内にまとめています。
ご教授のほど、よろしくお願いいたします。

Accepted Answer

Atsushi Ueno
Atsushi Ueno on 31 Jul 2021
Edited: Atsushi Ueno on 28 Aug 2021
添付ファイル3つは、アレルギー単語リストのExcelファイル、その一部をキャプチャした画像ファイル、表示用画像ファイル(MATLABロゴ)です。ocr関数の結果からは認識文字だけではなく認識枠の座標情報も得ています。insertText関数でテキストボックスを画像に追加する事が出来ます。insertObjectAnnotation関数も使ってみました。MATLABロゴを認識文字に応じた画像に代えればやりたい事が実現すると思います。
img = imread('image.png');
results = ocr(img);
Ninshikimoji = lower(results.Words);
Ninshikiwaku = results.WordBoundingBoxes;
Jisho = readtable('allergy.xlsx','ReadRowNames',true);
word = categorical(Jisho.word);
Mininshiki = blanks(0);
for n = 1:size(Ninshikimoji,1)
if any(word == Ninshikimoji{n})
Shoukai = Jisho{Ninshikimoji{n},:};
% 追加箇所:ここから
img = insertObjectAnnotation(img,'rectangle',Ninshikiwaku(n,:),Shoukai{:},'font','fonts-japanese-gothic');
%img = insertText(img,Ninshikiwaku(n,[1 2]),Shoukai{:},'font','fonts-japanese-gothic','AnchorPoint','LeftBottom');
x = Ninshikiwaku(n,1); y = Ninshikiwaku(n,2); w = Ninshikiwaku(n,3); h = Ninshikiwaku(n,4);
logo = imresize(imread([Shoukai{:} '.png']),0.3);
img((y-h):(y-h+size(logo,1)-1),(x+w):(x+w+size(logo,2)-1),:) = logo;
% 追加箇所:ここまで
else
Mininshiki = [Mininshiki ' ' Ninshikimoji{n}];
end
end
imshow(img);
  4 Comments
Atsushi Ueno
Atsushi Ueno on 28 Aug 2021
insertObjectAnnotation関数またはinsertText関数の引数にオプション'font','fonts-japanese-gothic'を設定した理由は、日本語フォントを扱う為です。(このオプションが無いとエラーが出て日本語を表示する事が出来ませんでした)。
下記ドキュメントを参考に、お使いの環境で扱える日本語フォントを設定してみてください。
竣 齊藤
竣 齊藤 on 29 Aug 2021
承知いたしました。
ご教授していただきありがとうございます。

Sign in to comment.

More Answers (0)

Products


Release

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!