【问题标题】:Detect text in an image检测图像中的文本
【发布时间】:2020-03-28 18:20:57
【问题描述】:

我正在开发一个 Python 项目。 我需要创建的功能之一是能够检测图像是否有文本。我不需要任何类型的边界框,我只需要真或假,无论图像有多少文本。 我一直在遵循here 的步骤,但是,正如我设法找到的所有链接一样,它最终会创建边界框。

我有两个问题:

  1. 是否有任何文本检测机制可用于检测文本而无需边界框过程的所有开销?
  2. OpenCV 使用神经网络来检测外部 .PB 文件的文本;我需要加载它才能使用 nn。有没有办法将此文件嵌入到 .py 文件中?这将避免有两个文件。这背后的想法是能够导入 .py 文件并将其用作库,而忽略 .pb 文件(这是检测文本的模型)。

谢谢!

【问题讨论】:

    标签: python python-3.x image-recognition


    【解决方案1】:

    是否有任何文本检测机制可以用来检测文本而无需边界框过程的所有开销?

    边界框是所有检测处理的结果,因此代表了该过程的固有部分。如果您不关心文本在哪里,您可以在自己的代码中忽略生成的边界框。但是为了检测图像中是否有文本,算法(无论是什么类型)都必须检测文本在哪里

    如果您不关心结果,则链接文章中使用的 DNN 方法可能会有点矫枉过正。您总是可以尝试其他一些text detection algorithms 并尝试对它们进行概要分析,以便为您的应用程序找到计算成本较低的一个。总会有取舍。

    OpenCV 使用神经网络来检测外部 .PB 文件的文本;我需要加载它才能使用 nn。有没有办法将此文件嵌入到 .py 文件中?这将避免有两个文件。这背后的想法是能够导入 .py 文件并将其用作库,而忽略 .pb 文件(这是检测文本的模型)。

    是的,您可以将模型.pb 文件的内容作为buffer object 直接嵌入到您的Python 代码中,然后使用alternate model loading mechanism 从缓冲区中读取模型:

    retval = cv.dnn.readNetFromTensorflow(bufferModel[, bufferConfig])
    

    您可以使用 Unix hexdump 命令将二进制文件转换为十六进制序列:

    hexdump -e '"    " 8/1 "0x%02x, " "\n"' your_training.pb
    

    产生这样的输出:

    0x0a, 0x35, 0x0a, 0x0a, 0x62, 0x61, 0x74, 0x63,
    0x68, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x0b,
    

    然后将其粘贴到您的源文件中,并使用:

    bufferModel = bytearray([
        0x0a, 0x35, 0x0a, 0x0a, 0x62, 0x61, 0x74, 0x63,
        0x68, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x0b,
        # ...
    ])
    

    然后您可以将其传递给 OpenCV:

    retval = cv.dnn.readNetFromTensorflow(bufferModel)
    

    【讨论】:

    • 谢谢!关于 .pb 文件:我会使用 cv.dnn.readNetFromTensorflow(bufferModel[, bufferConfig]) 将其加载到“bufferModel”对象中,然后将其嵌入文件中?
    • 是的,您需要将二进制 .pb 文件转换为十六进制字节序列并包装在字节数组对象中,然后将其插入源模块中。我已经更新了如何执行此操作的答案。
    • 它是一个 80mb 的文件;还有其他方法吗?
    • .pb 文件与主文件一起分发!您可以在编码和存储之前先尝试压缩它,然后在加载时解压缩它。似乎很多东西都在乱七八糟。考虑是否真的需要一个文件 - 在库中拥有这样的支持文件是很常见的。这个 80MB 的文件只是检测文本的成本。
    猜你喜欢
    • 2011-02-05
    • 2011-12-08
    • 2020-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-18
    • 2016-03-28
    相关资源
    最近更新 更多