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

はじめに成分表示が英語で記載されている画像を読み込ませます。その成分表示の画像の中に、添付した画像の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の列の英単語があった時、日本語訳をコマンドウィンドウで表示するところまでは完了しています。
今回、ご教授して頂きたい点は、日本語訳をコマンドウィンドウに表示するのではなくテキストボックスに表示するという点と、日本語訳のイラストの画像を表示するという点となります。イラストの画像はパソコンのフォルダー内にまとめています。
ご教授のほど、よろしくお願いいたします。

 Respuesta aceptada

Atsushi Ueno
Atsushi Ueno el 31 de Jul. de 2021
Editada: Atsushi Ueno el 28 de Ag. de 2021

2 votos

添付ファイル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 comentarios

竣 齊藤
竣 齊藤 el 1 de Ag. de 2021
ご回答していただきありがとうございます。教えていただいたプログラムを用いてプログラムを実行させていただきます。
竣 齊藤
竣 齊藤 el 28 de Ag. de 2021
下記の添付写真をimgに用いてこのプログラムを実行したのですが、'fonts-japanese-gothic'が有効な値と一致しないとエラーが出てしまいました。そのため、このエラーの解決策をご教授していただきたいと考えております。
また、実行結果で文字認識した単語にあったイラストを表示したいと考えています。(例:appleの場合はリンゴのイラスト,peachの場合はもものイラスト)
下記の添付写真は、イラストをまとめたフォルダとなります。
ご教授の程、よろしくお願いいたします。
Atsushi Ueno
Atsushi Ueno el 28 de Ag. de 2021
insertObjectAnnotation関数またはinsertText関数の引数にオプション'font','fonts-japanese-gothic'を設定した理由は、日本語フォントを扱う為です。(このオプションが無いとエラーが出て日本語を表示する事が出来ませんでした)。
下記ドキュメントを参考に、お使いの環境で扱える日本語フォントを設定してみてください。
竣 齊藤
竣 齊藤 el 29 de Ag. de 2021
承知いたしました。
ご教授していただきありがとうございます。

Iniciar sesión para comentar.

Más respuestas (0)

Productos

Versión

R2021a

Preguntada:

el 31 de Jul. de 2021

Comentada:

el 29 de Ag. de 2021

Community Treasure Hunt

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

Start Hunting!