微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

OCR软件可以可靠地从表中读取值吗?

如何解决OCR软件可以可靠地从表中读取值吗?

| OCR软件是否能够将以下图像可靠地转换为值列表? 更新: 更详细地,任务如下: 我们有一个客户端应用程序,用户可以在其中打开报告。该报告包含一个值表。 但是并不是每个报表看起来都一样-不同的字体,不同的间距,不同的颜色,也许该报表包含许多具有不同行数/列数的表... 用户选择报告中包含表的区域。使用鼠标。 现在,我们想使用OCR工具将所选表转换为值。 当用户选择矩形区域时,我可以要求其他信息 帮助OCR流程,并要求确认已正确识别这些值。 最初将是一个实验项目,因此很有可能使用OpenSource OCR工具-或至少有一个不花任何钱用于实验目的的工具。     

解决方法

简单的答案是肯定的,您应该选择正确的工具。 我不知道开源是否能够在这些图像上获得接近100%的准确性,但是基于这里的答案,如果您花一些时间训练并解决表格analisys问题以及类似的事情,可能是肯定的。 当我们谈论诸如ABBYY或其他之类的商用OCR时,它将为您提供99%以上的准确度,并且会自动检测表格。没有培训,没有任何东西,只是有效。缺点是您必须为此支付$$。有些人会反对开放源代码,您需要花时间进行设置和维护-但每个人都在这里自己决定。 但是,如果我们谈论商业工具,实际上还有更多选择。这取决于您想要什么。盒装产品(例如FineReader)实际上旨在将输入文档转换为可编辑文档(例如Word或Excell)。由于实际上是要获取数据,而不是Word文档,因此您可能需要研究其他产品类别-数据捕获,它本质上是OCR,外加一些其他逻辑以在页面上查找必要的数据。如果是发票,可以是公司名称,总金额,到期日期,表中的行项目等。 数据捕获是一个复杂的主题,需要学习一些知识,但是从文档中捕获数据时,正确使用数据可以提高准确性。它使用不同的规则进行数据交叉检查,数据库查找等。必要时,它可能会发送数据以进行手动验证。企业广泛使用Data Capture应用程序来每月输入数百万个文档,并严重依赖于他们日常工作流程中提取的数据。 当然也有OCR SDK,可以使您通过API访问识别结果,并且可以编程处理数据。 如果您更详细地描述您的任务,我可以为您提供建议,指示更容易朝哪个方向发展。 更新 因此,您要做的基本上是使用所谓的“单击以索引”方法的Data Capture应用程序,但不是完全自动化的。市场上有许多类似的应用程序:您扫描图像,然后操作员单击图像上的文本(或在图像周围绘制矩形),然后将字段填充到数据库中。当要处理的图像数量相对较小并且手动工作量不足以证明全自动应用程序的成本合理时,这是一种很好的方法(是的,有些全自动系统可以处理具有不同字体,间距,布局,表中的行等)。 如果您决定开发产品而不是购买,那么这里只需要选择OCR SDK。您将自己编写的所有UI,对不对?最大的选择是决定:开源还是商业。 据我所知,最好的开源软件是tesseract OCR。它是免费的,但可能在表分析方面存在实际问题,但是使用手动分区方法应该不会成为问题。至于OCR的准确性-人们经常接受OCR字体培训,以提高准确性,但是您不应该这样做,因为字体可能会有所不同。因此,您可以尝试tesseract并查看将获得什么精度-这将影响手动进行校正的数量。 商用OCR将提供更高的准确性,但会花费您大量资金。我认为您还是应该看看它是否值得,或者tesserack对您来说足够好。我认为最简单的方法是下载某些盒式OCR产品的试用版,例如FineReader。您将很好地了解OCR SDK的准确性。     ,如果表中始终有实线边框,则可以尝试以下解决方案:      在每页上找到水平和垂直线(长期   黑色像素)   使用线坐标将图像分割为单元格   清理每个单元格(删除边框,阈值为黑色和白色)   在每个单元格上执行OCR   将结果组装成2D阵列    另外,您的文档具有无边界表,则可以尝试遵循以下步骤:   光学字符识别是非常了不起的东西,但不是   永远完美。为了获得最佳效果,使用   您可以提供最干净的输入。在最初的实验中,我发现   在整个文档上执行OCR实际上效果很好   只要我删除了单元格边界(水平和垂直较长)   行)。但是,该软件将所有空格压缩为一个空格   空的空间。由于我的输入文档有多个列,   在每列中有几个单词,单元格边界就迷路了。   保持细胞之间的关系非常重要,因此   可能的解决方案是在每个字符上绘制一个独特的字符,例如“ ^”   单元边界– OCR仍会识别的东西   以后可以使用它来分割结果字符串。 我在此链接中找到了所有这些信息,并要求Google \“ OCR到表格\”。作者发布了使用Python和Tesseract这两种开源解决方案的完整算法! 如果您想尝试使用Tesseract功能,也许您应该尝试以下站点: http://www.free-ocr.com/     ,        您在说哪个OCR? 您将基于该OCR开发代码还是要使用现成的产品? 仅供参考: Tesseract OCR 它实现了文档读取可执行文件,因此您可以输入整个页面,并且它将为您提取字符。它可以很好地识别空格,可以帮助制表符间距。     ,        从98年以来,我一直在OCR \扫描文档。对于扫描的文档,这是一个经常发生的问题,特别是对于那些包含旋转和/或倾斜页面的文档。 是的,有几种良好的商业系统,有些系统一旦配置好,就可以提供极好的自动数据挖掘速率,仅在那些性能很差的领域寻求操作员的帮助。如果我是你,我会依靠其中的一些。 如果商业选择威胁到您的预算,OSS可以提供​​帮助。但是,“没有免费的午餐”。因此,您将不得不依靠一堆量身定制的脚本来搭建一个负担得起的解决方案来处理您的文档。幸运的是,您并不孤单。实际上,在过去的几十年中,许多人一直在处理这个问题。因此,恕我直言,本文为这个问题提供了最佳简洁的答案: https://datascience.blog.wzb.eu/2017/02/16/data-mining-ocr-pdfs-using-pdftabextract-to-liberate-tabular-data-from-scanned-documents/ 它的阅读值得!作者提供了自己的有用工具,但是本文的结论对于给您如何解决此类问题的良好思路非常重要。 “没有银弹。” (弗雷德·布鲁克斯(Fred Brooks),《神幻的人月》     ,        这确实取决于实现。 有一些参数会影响OCR的识别能力: 1. OCR的培训水平-示例数据库的大小和质量 2.检测“垃圾”的能力(除了知道什么是字母,还需要知道什么不是字母)。 3. OCR的设计和类型 4.如果是神经网络,则神经网络的结构会影响其学习和“决定”的能力。 因此,如果您自己做的不是一个,那只不过是测试各种类型的问题,直到找到合适的类型为止。     ,        您可以尝试其他方法。使用tesseract(或其他OCRS),您可以获得每个单词的坐标。然后,您可以尝试按垂直和水平坐标对这些单词进行分组,以获得行/列。例如,要区分空白和制表符空间。需要一些练习才能获得良好的结果,但有可能。使用此方法,即使表使用了不可见的分隔符-没有行,您也可以检测到表。单词坐标是表Recog的坚实基础     ,我们还努力解决表中文本识别的问题。开箱即用的解决方案有两种,ABBYY识别服务器和ABBYY FlexiCapture。 Rec Server是基于服务器的大容量OCR工具,旨在将大量文档转换为可搜索格式。尽管针对这些类型的用途提供了API,但我们还是建议您使用FlexiCapture。 FlexiCapture对从表格格式中提取数据进行低级控制,包括自动检测页面上的表格项。它提供不带前端的完整API版本或我们销售的现成版本。如果您想了解更多,请与我联系。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。