이미지상의 텍스트 번역
이미지를 입력으로 얻고 그 안에 포함된 텍스트를 영어로 번역하는 함수를 구축 할 수 있습니다.
In[1]:=
ImageTranslate[image_, rules___Rule] :=
ImageTranslate[image, Association@rules];
ImageTranslate[image_, args_] := Module[
{tr, gt, translatedText, to = Entity["Language", "English"], i,
ifc, rule, im, result = {}, recognizedList},
i = Binarize@ColorNegate@image;
ifc = ImageForestingComponents[ColorNegate@i,
Automatic, {First@ImageDimensions@i, 1}];
rule = {h__, {0 ..}, w : {0 ..}, {0 ..}, t__} -> {h, w, w, t};
im[x_] :=
Transpose[
Transpose[Replace[ifc, Except[x] -> 0, {2}] //. rule] //. rule];
tr = TextRecognize[Image[im[#]], Language -> "Spanish"] & /@
Range[2, Max@ifc];
recognizedList = Flatten@List[tr];
gt = args[ServiceObject];
translatedText =
gt["Translate", "To" -> to, "Text" -> #] & /@ recognizedList;
translatedText
]
Microsoft Translator API에 연결합니다.
In[2]:=
mt = ServiceConnect["MicrosoftTranslator"];
이미지를 가져옵니다.
In[3]:=
텍스트가 포함된 부분을 선택합니다.
In[4]:=
col = ImageTake[img, {970, 1920}, {770, 1300}]
Out[4]=
사전에 정의된 함수를 사용하여 번역을 얻습니다.
In[5]:=
translation = ImageTranslate[col, ServiceObject -> mt]
Out[5]=
Wolfram 언어를 사용하면 번역한 텍스트를 실제 색상으로 변환 역시 가능합니다.
In[6]:=
Interpreter["Color"] /@ translation
Out[6]=