翻译图像中的文字
我们可以建立一个函数,输入为一个图像,它把其中的文字翻译成英文.
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]=
