Python 如何判断一张图片的内容为文字内容? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
colatea
V2EX    问与答

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

  •  
  •   colatea 2022-04-25 10:19:59 +08:00 2422 次点击
    这是一个创建于 1335 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有个需求,识别图片,判断图片内容是 文字还是图表
    想到的办法:
    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     Solana     2463 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 11:07 PVG 19:07 LAX 03:07 JFK 06:07
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86