OCR

使用光学字符识别识别文本

描述

三种= ocr (一世返回ocrText包含来自输入图像的光学字符识别信息的对象,一世。对象包含已识别的文本、文本位置和表示识别结果可信度的度量。

三种= ocr (一世roi识别文本一世内的一个或多个矩形区域。该roi输入包含中号4矩阵,中号感兴趣的区域。

[___)= ocr (___名称,值使用一个或多个指定的附加选项名称,值配对参数,使用任何前述语法。

例子

全部收缩

名片= imread (“businessCard.png”);ocrResults = ocr(名片)
“MathWorks®…”' CharacterBoundingBoxes: [103x4 double] character confidence: [103x1 single] Words: {16x1 cell} WordBoundingBoxes: [16x4 double] wordconfidence: [16x1 single]
recognizedText = ocrResults.Text;图;imshow(的businesscard);文本(600,150,recognizedText,'背景颜色', [1,1,1]);

读取图像。

I = imread('handicapSign.jpg');

在I中定义一个或多个感兴趣的矩形区域。

ROI = [360 118 384 560]。

你也可以使用IMRECT用鼠标选择一个区域:图;imshow(I);ROI = ROUND(为getPosition(imrect))

ocrResults = OCR(I,ROI);

将识别出的文本插入到原始图像中

Iocr = insertText (roi(1:2),我ocrResults.Text,“AnchorPoint”'RightTop''字体大小',16);图;imshow(IOCR);

名片= imread (“businessCard.png”);ocrResults = ocr(名片)
“MathWorks®…”' CharacterBoundingBoxes: [103x4 double] character confidence: [103x1 single] Words: {16x1 cell} WordBoundingBoxes: [16x4 double] wordconfidence: [16x1 single]
IOCR = insertObjectAnnotation(的businesscard,'长方形'ocrResults.WordBoundingBoxes,ocrResults.WordConfidences);图;imshow(IOCR);

名片= imread (“businessCard.png”);ocrResults = ocr(名片);bboxes = locateText (ocrResults,“MathWorks公司的'IGNORECASE',真正的);Iocr = insertShape(名片,'FilledRectangle',bboxes);图;imshow(IOCR);

输入参数

全部收缩

输入图像,在规定的中号-通过-ñ-by-3真彩,中号-通过-ñ2-d灰度或二进制格式。输入图像必须是真实的,非稀疏值。函数转换真彩或灰度的输入图像为二进制图像,识别处理之前。它采用了大津的阈值技术的转换。为了获得最佳的OCR结果,在输入图像中一个小写的“x”,或类似的字符的高度,必须大于20个像素大。从水平或垂直轴,除去任何文本转大于+/- 10度,以提高识别结果。

数据类型:||INT16|uint8|UINT16|合乎逻辑

感兴趣的一个或多个矩形区域,指定为中号-by-4元素矩阵。每一行,中号时,指定的输入图像内的感兴趣区域,作为四元素矢量,[Xÿ宽度高度]。向量指定左上角的位置,[Xÿ],和感兴趣的矩形区域的大小,[宽度高度],以像素为单位。每个矩形必须完全包含在输入图像中,一世。识别过程之前,函数使用大津的阈值来转换真彩和感兴趣的二进制区域灰度的输入区域。在函数返回文本在矩形区域识别为对象的数组。

名称 - 值对参数

指定可选的用逗号分隔的对名称,值参数。的名字是参数的名称和价值是对应的值。的名字必须出现引号内。您可以按照任何顺序指定多个名称和值对参数名1,值1,...,NameN,值N

例:OCR(I, 'TextLayout的', '阻止')

输入文本布局,指定为逗号分隔的一对组成的“TextLayout“还有下面的一条:

TextLayout 文字处理
“汽车” 确定输入图像内文本块的布局和读取顺序。
“块” 将图像中的文本视为单个文本块。
'线' 将图像中的文本视为单行文本。
“词” 将其视为一个单独的文字字图像中的文本。

使用自动布局分析来识别从包含特定的格式,扫描的文档的文本,如双列。此设置保存在返回的文本阅读顺序。你可能会得到不好的结果,如果你输入的图像包含文本的少数地区或文本位于凌乱的场景。如果你得到可怜的OCR结果,尝试在图像的文本匹配不同的布局。如果文本位于一个混乱的场面,尽量除了尝试不同的布局,指定在图像中的文本的投资回报率。

语言识别,指定为逗号分隔的一对组成的“语言'和字符向量“英语”“日本”或字符向量的单元阵列。您也可以安装安装OCR语言数据文件包装对其他语言或添加自定义语言。指定多个语言使得所有选定语言的同时识别。但是,选择一种以上的语言可能会降低精度,提高它需要进行OCR的时间。

要指定的任何一种都包含在其他语言安装OCR语言数据文件包,以与内置语言相同的方式使用语言字符向量。您不需要指定路径。

txt = ocr (img,“语言”,“芬兰”);

支持包OCR语言万博1manbetx列表

要使用自己定制的语言,指定路径训练有素的数据文件作为语言特征向量。您必须命名格式文件,<语言>。traineddata。该文件必须位于一个名为'tessdata”。例如:

TXT = OCR(IMG, '语言', '路径/到/ tessdata / eng.traineddata');
您可以加载多个自定义语言为特征向量的单元阵列:
txt = ocr(img,'Language',…{“路径/ / tessdata / eng.traineddata”,…的路径/ / tessdata / jpn.traineddata});
包含文件夹必须总是对所有的单元阵列中指定的文件中的相同。在前面的例子中,所有的traineddata在单元阵列中的文件被包含在文件夹“中路径/到/ tessdata”。由于下面的代码指向两个不同的文件夹中包含,这是行不通的。
txt = ocr(img,'Language',…{“路径/一/ tessdata / eng.traineddata”,…的路径/两/ tessdata / jpn.traineddata});
有些语言文件依赖于另一种语言。例如,印地语训练依赖于英语。如果你想用印地语,就用英语traineddata文件必须存在于与印地语相同的文件夹中traineddata文件。该OCR只支持万博1manbetxtraineddata文件创建使用tesseract-ocr3.02或使用OCR教练

对于所产生的部署目标MATLAB®编码器™:生成的OCR文件夹必须协同定位的可执行文件和语言数据文件。该tessdata文件夹必须命名tessdata

  • 英语:C:/path/tessdata/eng.traineddata

  • 日本:C: / / tessdata / jpn.traineddata路径

  • 对于自定义的数据文件:C: / / tessdata / customlang.traineddata路径

  • C:/path/ocr_app.exe

你可以从以下网站复制英文和日文训练过的数据文件:

完整文件(matlabroot, '工具箱', '视觉', 'visionutilities', 'tessdata');

字符子集,指定为逗号分隔的一对组成的“字符集和一个字符向量。默认情况下,字符集被设置为空字符向量,“”。方法指定的语言中的所有字符语言财产。您可以将此属性设置为一组较小的已知字符,以约束分类过程。

OCR功能选择从最佳匹配字符集。使用对输入图像中的文字推断的知识有助于提高文字的识别精度。例如,如果你设置字符集所有的数字组成,'0123456789'中,函数尝试每个字符仅位数匹配。在这种情况下,一个非数字字符可以正确得到公认的数字。

输出参数

全部收缩

识别的文本和度量,返回一个ocrText对象。该对象包含已识别的文本、已识别文本在输入图像中的位置以及表示结果可信度的度量。置信值范围是[0 1],表示一个百分比概率。当你指定一个中号-by-4roi,在函数返回ocrText作为中号1组ocrText对象。

如果你的OCR结果不是你所期望的,尝试以下一个或多个选项:

  • 增加图像2至4倍的原始大小。

  • 如果图像中的字符靠得太近或它们的边缘是接触,使用形态学变薄的字符。使用形态变薄字符分隔的字符。

  • 使用二值化检查不均匀的照明问题。使用graythreshimbinarize功能,以二值化图像。如果字符不是在二值化的结果可见,这表明潜在的非均匀照明问题。尝试顶帽子,使用imtophat函数,或其它技术处理除去未均匀的照明。

  • 使用感兴趣的区域roi选择隔离文本。指定roi手动地或使用文本检测。

  • 如果你的图像看起来像一个天然的场景包含单词,像街道场景,而不是扫描文档,请尝试使用一个ROI输入。此外,您还可以设置TextLayout属性“块”“词”

参考

[1] R.史密斯。在正方体OCR引擎的概述上文献分析与识别的第九届国际会议论文集(2007年ICDAR)第2卷(2007),第629-633。

[2] Smith, R., D. Antonova,和D. Lee。适应的Tesseract开源OCR引擎OCR多语种。多语言OCR国际研讨会论文集,(2009)。

[3]r .史密斯。混合页面布局分析通过制表符停止检测。在文档分析与识别的第10届国际会议论文集。2009年。

扩展功能

介绍了R2014a