Image processing Mathematica';不符合标准

Image processing Mathematica';不符合标准,image-processing,wolfram-mathematica,text-recognition,Image Processing,Wolfram Mathematica,Text Recognition,请看下面的屏幕截图,看看你是否能告诉我为什么这不起作用。TextRecognite参考页中的示例看起来非常令人印象深刻,我认为识别这样的单个字母不应该是一个问题。我试过调整字母的大小,也试过锐化图像 为方便起见,如果你想亲自尝试,我在这篇文章的底部附上了我使用的图片。通过在谷歌图像搜索中搜索“Wordfeud”,你还可以找到更多类似的内容 这个问题很酷 TextRecognite使用启发式方法从英语中识别整个单词。这是 这使得识别单个字母非常困难 考虑以下思路: s = Import["htt

请看下面的屏幕截图,看看你是否能告诉我为什么这不起作用。TextRecognite参考页中的示例看起来非常令人印象深刻,我认为识别这样的单个字母不应该是一个问题。我试过调整字母的大小,也试过锐化图像

为方便起见,如果你想亲自尝试,我在这篇文章的底部附上了我使用的图片。通过在谷歌图像搜索中搜索“Wordfeud”,你还可以找到更多类似的内容

这个问题很酷

TextRecognite使用启发式方法从英语中识别整个单词。这是 这使得识别单个字母非常困难

考虑以下思路:

s = Import["http://i.stack.imgur.com/JHYuh.png"];
p = ImagePartition[s, 32]
现在选择字母组成英语单词“EXIT”:

x = {p[[1, 13]], p[[6, 6]], p[[3, 13]], p[[1, 12]]}
现在稍微清理一下这些图像,如下所示:

d = ImageAssemble[ Map[ImageTake[#, {3, 27}, {2, 20}] &, x ]];
然后返回字符串“EXIT”:


我认为你的图像质量可能会产生干扰。对图像进行二值化并没有帮助:识别是微不足道的。我还尝试了一个非常清晰的纵横填字游戏解决方案的黑白图像。(见下文)同样,无论是常规格式还是二进制格式,都无法识别任何内容

所以我去掉了黑色的背景,只留下字母和它们的薄薄的黑色框架。同样,识别率约为0%

当我从一些字母周围移除框架并对图像进行二值化时,唯一可以识别的部分是那些只有字母的区域。(见下文)

请注意,在下面的输出中,蚂蚁、轮胎和德克萨斯都得到了正确识别(以及向量),但除此之外几乎没有其他标识

还要注意的是,尽管字符串的间距很大,但mma将其解释为单词,而不是单独的字母。注意“TEXAS”而不是“TEXAS”

我没有耐心彻底清理图像。手工重新键入文本会快得多

结论:不要在mma中使用文本识别,除非你有绝对清晰的文本,背景颜色均匀、明亮,最好是白色

结果也因使用的文件格式而异。完全避免使用.pdf



编辑

acl已捕获并尝试识别最后5行(编辑上方)。他的结果(在下面的评论中):大部分是胡言乱语

我决定也这样做。但由于Prashant警告说文本大小会产生影响,我首先放大文本,使文本(在我看来)看起来大约是20个pica。下面是我扫描的文本和
textRecognite
d的图片



下面是一个非二进制的
textRecognite
(大小如此之大)的结果:

现在,这里是二值化图像的
textRecognite
的结果。原始图像是来自Jing的.png

I didn't have the patience to completely clean up the image. It would \
have been much faster to retype the
text by hand.
Conclusion: Don't use text recognition in mma unless you have \
absolutely clear text against an even-
colored, bright, preferrably white, background.
The results also varied depending on the file format used. Avoid .pdf \
altogether. 

这是一种与使用TextRecognite完全不同的方法,因此我将此作为一个单独的答案发布。它使用的是同一种图像识别技术

首先,让我们来猜谜:

wordfeud = Import["http://i.stack.imgur.com/JHYuh.png"]
Grid[pieces = ImagePartition[s, 32]]

然后得到拼图的各个部分:

wordfeud = Import["http://i.stack.imgur.com/JHYuh.png"]
Grid[pieces = ImagePartition[s, 32]]

让我们对字母E感兴趣:

LetterE = pieces[[4, 3]]

获取相关图像:

correlation = 
 ImageCorrelate[wordfeud, Binarize[LetterE], 
 NormalizedSquaredEuclideanDistance]

并突出显示匹配项:

positions = Dilation[ColorNegate[Binarize[correlation, .1]], DiskMatrix[20]];
found = ImageMultiply[wordfeud, ImageAdd[ColorConvert[positions, "GrayLevel"], .5]]

与以前一样,这需要对相关图像进行一些二值化调整,但不是
这应该有助于识别这个谜题的各个部分。

你能在描述中更明确地回答这个问题吗?(顺便说一句,我试过一次,我同意,它不是很好。我没有花太多精力让它工作。也许注意到它的使用很有趣)我想Calle想检查一下文本识别功能是否像他想象的那样有限。如果不是,他做了什么错事?如果是这样的话,以高命中率扫描文本需要什么?您可能希望从高分辨率图像开始,
textRecognite
不识别低于某个阈值的文本。关于mma,请注意识别实际单词(默认情况下,在英语中)而不是单个字母。这就是为什么我要找一个英语纵横字谜;我还想要一张黑白照片。似乎mma更可能在背景不分散注意力的情况下将一串间隔较宽的字母识别为一个单词。谢谢你们的回答。我应该向将来访问此页面的任何人指出,参考页面确实有一个字母随机排序的工作示例。所以这不起作用是前两个答案的组合。第三个答案中建议的ImageCorrelate产生了可靠的结果。一个功能建议:有一个选项可以禁用拼写更正,另一个选项可以限制要识别的字符集(我相信Tesseract,
TextRecognite
的后端已经可以做到这一点)。所以,我截取了你文章最后5行的截图(png),试图让mma识别它。上面写着:“男人有权提高工资。”。nweme已经做了很多工作,| ae\\er\\e重新键入\\e>(顺便说一句,+1)@acl尝试在识别文本之前对图像进行二值化,看看这是否有帮助。如果按照昨天尝试的大小进行剪切,似乎没有什么区别。也许这与文本的大小有关。@acl您使用的是什么文件格式?当我使用.png时,即使字体很大,我也需要对结果进行
二值化
,即使文本看起来是黑色的。
positions = Dilation[ColorNegate[Binarize[correlation, .1]], DiskMatrix[20]];
found = ImageMultiply[wordfeud, ImageAdd[ColorConvert[positions, "GrayLevel"], .5]]