- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有以下问题:我有一些序列号总是由 2 行 7 个字符(0-9 和 A-Z)组成,总共 14 个字符。这些序列号位于各种产品的图片上;我能够通过使用大量图像处理和几何变换算法将它们定位为以下形式:
现在我的目标是读取这些序列号。在将数字本地化为如此紧凑的图像后,我首先尝试了 Tesseract API。不幸的是,要么我没有正确调整 API,要么这种特定字体不在 Tesseract 的训练集中,因为 Tesseract 无法正确解析序列号。然后我很快转向定制解决方案。
要做的基本事情是,因为我知道字符的纵横比和相对大小,在标记的字符和背景图像上训练一个简单的分类器(HOG + 线性 SVM)(无论如何我都必须这样做)然后通过经典的滑动窗口方式运行它,然后应用非最大抑制来消除误报检测。这种蛮力方法对我来说似乎不是很有效,因为 1) 必须为每个窗口运行大量特征提取 + 分类操作 2) 我必须手动标记大量背景(负)样本,其中包括过渡区域两个字符之间,两条线之间的垂直空间,纯背景等。由于我能够将序列号定位到一个矩形中,该矩形仅包含除字符外的纯色背景,因此我想到了一个简单的前景/背景分割方案。我尝试的第一件事是将图像转换为灰度,缩小它并运行低通滤波器以去除高频噪声并应用 Otsu 阈值处理。如果我能够近乎完美地定位每个字符,我就可以运行一个只包含其边界框的分类器,并且我不需要大量的负过渡/背景等标记样本。从上面的操作中,我得到了以下结果,具有最佳的模糊内核大小:
现在我几乎可以定位每个角色,但正如您在第二张图片中看到的那样,由于光照条件不佳,一些嘈杂的杂波被传递为前景(尤其是左侧的 0 和 F 附近)。也许对二值图像进行一些额外的膨胀/腐 eclipse 操作有助于减少非字符的困惑,但我肯定无法完全消除它们。我的问题是关于在 Otsu 阈值之后如何在那个阶段本地化角色的任何帮助和想法?我确实知道每个字符的宽度和高度(由手工测量引起的不确定性很小)而且我也知道它们总是构成两行,每行有 7 个元素。我想到了一种连通分量算法,它将前景像素分组为 blob,然后过滤掉确实具有宽度和高度不一致的边界框的 blob,但它离编码阶段还很远。我对任何类似的想法或例子持开放态度。 (如果有任何帮助,我将 OpenCV 与 Java 结合使用)。
最佳答案
当角色被孤立并成为一个整体时,连接组件是可行的方法。只需忽略小 Blob 并使用边界框即可。
有时字符会有小突起(如 F),这会导致字符看起来比实际大。对于固定宽度的字体,您可以将框调整到该大小。
有时字符会被分成两部分或三部分。您可以根据几何学考虑和关于文本结构的先验知识重新组合这些片段。
在这种情况下,实现 100% 的可靠性是一个真正的挑战。
关于java - OCR:如何定位序列号图像中的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48868119/
根据 Wikipedia 的说法,“拉丁文打字文本的准确识别现在被认为在很大程度上解决了可以提供清晰成像的应用程序(例如扫描打印文档)的问题。”但是,它没有给出引用。 我的问题是:这是真的吗?当前最先
我在将包含文本图像的 JPG 文件转换为文本文件时遇到问题。我尝试了 ABBYY 的 OCR SDK 和其他一些 OCR 来源,但没有一个包含格鲁吉亚语。 你能告诉我是否有任何可用于格鲁吉亚语的 OC
有人给了我一大堆惊人的信息。它是 200MB 的 .tiff 扫描公告图像,可以追溯到 40 年代。我想将其数字化,但我对 OCR 一无所知。一些早期的 Material 几乎无法被人类阅读,更不用说
我正在尝试通过 python-tesseract 使用 tesseract-OCR 来读取看起来像这样的低分辨率字体: 不幸的是,该图像返回 ZIJZHZI 我认为分辨率太低,这会导致问题。我试过放大
OCR 软件是否能够可靠地将如下图像转换为值列表? 更新: 更详细的任务如下: 我们有一个客户端应用程序,用户可以在其中打开报告。此报告包含一个值表。 但并不是每个报告看起来都一样——不同的字体、不同
我正在尝试使用 Tesseract-OCR检测其中包含纯文本的图像文本,但这些文本具有名为Journal 的手写字体。 例子: 结果不是最好的: Maxima! size` W (35) 有没有可能改
我已经开始了一个简单的项目,它必须获得一个包含带有上标的文本的图像,然后通过使用 OCR(目前我正在使用 tesseract)它必须识别上标字符 + 正常字符。 例如,我们有一个化学方程式,例如 Cl
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 8年前关闭。 Improve this q
我目前正在研究 OCR(波斯语), 尽管“fas.traineddata”在tessdata中可用,但是当我使用以下命令时,什么也没发生: import pytesseract from PIL im
我对文本片段中下标和上标的一般识别有疑问。 示例图片: 我使用 Tesseract 4.1.1 和 https://github.com/tesseract-ocr/tessdata_best 下可用
在过去的 3 个月里,我一直在尝试训练 Tesseract 通过识别我拥有的图像集合,由于真正的缺乏 正确的文档,以及非常高的复杂性,我开始 放弃将 Tesseract 作为解决方案。 我正在寻找一种
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 12 个月前关闭。 Improve this
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
下面是我的电表读数 52425.5(粗略)的图片: 什么程序/技术可以帮助我自动抄表?备注: 这是较为清晰的图像之一。许多图像都有静态。我可以忽略(让程序说“错误”)带有太多静态的图片。 相机有一个固
大写字母OCR(光学字符识别)的常见错误有哪些? 例如FOR -> FOB 最佳答案 要获得最准确的答案,最好使用针对您的问题的特定数据样本自行测试。不同字符/单词组合的错误率可能有很大差异,具体取决
对于我想教 Tesseract 将复选框识别为单词的客户。当 Tesseract 应该识别一个空的复选框时,它工作得很好。 此命令与 this 结合使用教程就像一个魅力,Tesseract 能够找到空
我正在使用 Tesseract OCR将扫描的 PDF 转换为纯文本。总体而言,它非常有效,但我对扫描文本的顺序有疑问。带有表格数据的文档似乎是逐列向下扫描,而更自然的方式是逐行扫描。一个非常小的例子
在哪里可以找到 cube 的 tesseract ocr 土耳其语扩展模式? 文件: tr.cube.fold tr.cube.lm tr.cube.nn tr.cube.params tr.cube
我正在编写一个用于训练 Tesseract OCR 图像的生成器。 在为 Tesseract OCR 的新字体生成训练图像时,最佳值是什么: 新闻部 以磅为单位的字体大小 字体是否应该抗锯齿 边界框是
我的文本带有一些不那么复杂的数学符号,如下所示。 Tesseract OCR 默认无法识别此类数学符号(+-、角度)。我如何通过 tesseract 识别这些数学符号? 最佳答案 只需使用以下语句:
我是一名优秀的程序员,十分优秀!