调整模型的最佳做法?

时间:2020-10-13 09:53:32

标签: ocr tesseract

关于微调过程,我有几个问题。 我正在构建一个能够识别以下文档中数据的应用程序:

  • 身份证
  • 驾驶执照
  • 护照
  • 收据

所有字体都有不同的字体(尤其是收据),很难完全匹配相同的字体,我将不得不训练许多相似字体的模型。

所以我的问题是:

  1. 我应该为每种文档类型训练一个单独的模型以获得更好的性能和准确性,还是可以在与这些字体相似的一堆字体上训练单个eng模型被用于这类文件吗?

  2. 每种字体我应该生成多少页的培训数据?默认情况下,我认为tesstrain.sh会生成约4k页。 也许有关于如何生成最接近实际输入数据的训练数据的建议

  3. 应使用多少次迭代?

例如,如果我使用的是错误率较高的字体,而我希望定位为98% - 99%的准确率。

也许你们中的一些人有处理此类文档的经验,也许您知道这些文档使用的一些常见字体?

我知道护照和身份证上的机读区使用OCR-B字体,但是文档的其余部分呢?

谢谢!

3 个答案:

答案 0 :(得分:1)

答案1 您可以训练一个模型来达到相同的目的,但是如果您想检测不同的语言,那么我认为您将需要不同的模型。

答案2 如果您要查找一些数据集,请查看此Mnist Png Dataset,其中包含数字以及来自各种基于计算机的字体的字母。这是一些入门代码的链接,以使用Pytorch中实现的数据集。

答案3 您可以使用optuna找到适合您模型的最佳参数集,但是您将需要一些

看看这些

他们正在努力完成类似的任务。 希望它能回答您的问题...!

答案 1 :(得分:1)

  1. 我将针对4种不同类型训练分类器,以对ID,许可证,护照和收据进行分类。基本上,您知道护照是护照vs驾驶执照等。然后,我将拥有另外4个用于转换每种特定类型(护照,驾驶执照,ID和收据)的模型。应该注意的是,如果您使用多种语言,这可能意味着基于每种特定语言制作4个模型,也就是说,如果您使用L种语言,则需要4 * L个用于翻译这些模型的模型。

  2. 很像。我认为字体确实不是问题。也许您应该做的就是尝试为诸如驾照之类的东西定义一些模板,然后基于该模板生成?

  3. 这是您最少的问题,只需对此进行测试。

答案 2 :(得分:1)

假设您所指的是ML数据模型,该模型可用于使用计算机视觉执行ocr,我建议:

  1. 根据您的应用程序要求设置分类法。 这意味着要对每种类型的扫描文档(png,jpg tiff等)的预期字体集进行分类,以包括在适当的数据集中。选择最接近所使用字体的字体以及需要收集的信息类型(仅数字,字母字符)。

  2. 对数据集执行数据清除,并确保OCR功能具有统一的数据。 例如,所有文档图像都应为png类型,最大尺寸为46x46,以具有适当的训练模型。请注意,更高分辨率的图像和较小的比例意味着更高的准确性。

  3. 如果损坏的字体图像或不可见的字体图像,也可用于手写。如果纸上的字体看不清/磨损,这可能会改善字符转换选项。

  • 如果您在mnist提供的数据集上使用带TF的keras模块,请在达到98%-99%的准确度时设置ML模型训练的取消规则,以进行更多控制,以防图像中的字体容易出错(如上所述)。当您的训练数据集中有不良图像时,这有助于避免更高的错误余量。对于包含1000多个图像的数据集,最好使用256和5个历元的TF Dense。 可以找到here的样本训练数据集。

如果您只需要对应用程序进行一些自动化或需要从图像进行OCR转换的数据输入,那么一个好的开源解决方案是使用通过PSImaging模块(Powershell)自动收集的信息,并使用检索到的置信度( (来自png),并针对您当前的数据集运行它们,以提高字符匹配的准确性。 您可以找到相关的链接here