Wolfram 语言

外部服务

翻译图像中的文字

我们可以建立一个函数,输入为一个图像,它把其中的文字翻译成英文.

In[1]:=
Click for copyable input
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]:=
Click for copyable input
mt = ServiceConnect["MicrosoftTranslator"];

导入图像.

In[3]:=
Click for copyable input

选取有文字出现的区域.

In[4]:=
Click for copyable input
col = ImageTake[img, {970, 1920}, {770, 1300}]
Out[4]=

使用前面定义的函数来得到翻译.

In[5]:=
Click for copyable input
translation = ImageTranslate[col, ServiceObject -> mt]
Out[5]=

你甚至可以用 Wolfram 语言将文字转换为真实的色彩!

In[6]:=
Click for copyable input
Interpreter["Color"] /@ translation
Out[6]=

相关范例

de en es fr ja ko pt-br ru