V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
colatea
V2EX  ›  问与答

Python 如何判断一张图片的内容为文字内容?

  •  
  •   colatea · 2022-04-25 10:19:59 +08:00 · 2028 次点击
    这是一个创建于 944 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有个需求,识别图片,判断图片内容是 文字还是图表
    想到的办法:
    1,像素判断,因为文字内容的颜色不是黑就是蓝,取像素值并设定阈值进行判断
    2,进行文字识别,以识别到的文字量和图片宽高的比例进行判断

    第 1 种感觉阈值要探索好久
    第 2 种感觉太"重"了,效率太低

    不知道 V 友们有什么见解
    第 1 条附言  ·  2022-04-25 14:12:57 +08:00
    因为文字图片的字体和颜色是固定的
    所以用第一种方法解决了

    很笨的办法,但也不至于是瓶颈

    就是遍历整个图像的像素点矩阵
    找到非白,非黑,非灰(R=G=B),非蓝(R=G,B=255)的点
    够 100 个,认为是图像,找不够,认为是文字


    #灰色
    arr[i][j][0] == arr[i][j][1] == arr[i][j][2]
    #蓝色
    arr[i][j][1] and arr[i][j][2] == 255)
    这种判断是否相等的写法是否太不 V2 了?
    有没有高大上或者更高效的写法?
    11 条回复    2022-04-25 14:02:07 +08:00
    mekingname
        1
    mekingname  
       2022-04-25 10:57:16 +08:00   ❤️ 1
    第二种方法不行。因为 OCR 会强行把一些长得像文字的图片给你识别成最相似的文字。所以你用 OCR ,总能从没有文字的图片中识别出文字。
    ldyisbest
        2
    ldyisbest  
       2022-04-25 11:20:14 +08:00
    首先要明确一下,哪些是文字,哪些是图表。如果有样本的话,可以用神经网络试试
    coderluan
        3
    coderluan  
       2022-04-25 11:38:04 +08:00
    楼主说的“图表”是什么意思?

    如果就是说一般一样的图表,表格,本身就带字那种,那么可以考虑直接识别表格中的直线,有均匀直线的是图表,没有的是文字。

    如果就是普通图片,也就是识别一张图表到底带不带文字,实际上还是 OCR ,但是你得自己想一些办法解决 1 楼说的问题。
    tfdetang
        4
    tfdetang  
       2022-04-25 11:39:54 +08:00
    如果是比较规整的表格也很容易识别,可以用连续边缘检测 (opencv canny edge )看是否存在非常长的连续线条。 或者更简单的用 X 、Y 轴的像素投影来识别是否存在表格。

    当然如果会算法,用算法来区分那是更简单了,只要有人标注就行了
    colatea
        5
    colatea  
    OP
       2022-04-25 12:13:11 +08:00
    @coderluan 图表是 chart,也有一些文字,但文字量很少,文字的图片就全是文字,黑或蓝
    crab
        6
    crab  
       2022-04-25 12:27:17 +08:00
    ershierdu
        7
    ershierdu  
       2022-04-25 12:50:06 +08:00
    第一种已经有点像神经网络了,训练过程类似于自动找阈值
    colatea
        8
    colatea  
    OP
       2022-04-25 13:16:23 +08:00
    @crab 我这只是个小鸡鸡,您这可真是个大牛刀啊,不过很感谢,这东西很酷啊
    colatea
        9
    colatea  
    OP
       2022-04-25 13:39:26 +08:00
    @tfdetang 方法是好方法,但我没找到相关的能计算边缘长度的代码...
    bo233
        10
    bo233  
       2022-04-25 13:45:44 +08:00
    有标签好的数据吗,有的话可以试试训个深度神经网络,估计 alexnet 或者 vgg 就能 work
    colatea
        11
    colatea  
    OP
       2022-04-25 14:02:07 +08:00
    @bo233 木有标签~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2684 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 03:54 · PVG 11:54 · LAX 19:54 · JFK 22:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.