V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
这是一个专门讨论 idea 的地方。

每个人的时间,资源是有限的,有的时候你或许能够想到很多 idea,但是由于现实的限制,却并不是所有的 idea 都能够成为现实。

那这个时候,不妨可以把那些 idea 分享出来,启发别人。
yohanechan

有没有反 OCR 的轮子?

  •  1
     
  •   yohanechan · Jan 30, 2020 via Android · 11733 views
    This topic created in 2286 days ago, the information mentioned may be changed or developed.
    社交软件会 OCR 用户上传的图片,检测图片中的文字,发现敏感词将会拦截。
    是否可以用验证码的思路,在图片中加入噪点、干扰元素、扭曲字体,使机器难以识别,但人类仍然能认出其中的文字。
    43 replies    2022-03-06 20:49:38 +08:00
    jugelizi
        1
    jugelizi  
       Jan 30, 2020   ❤️ 21
    研表究明,汉字序顺并不定一影阅响读
    xml123
        2
    xml123  
       Jan 30, 2020
    那不还是验证码的技术吗
    WeaPoon
        3
    WeaPoon  
       Jan 30, 2020
    @jugelizi #1 第一个序顺是真没注意,第二个定一就感觉不对劲了,哈哈
    moshou
        4
    moshou  
       Jan 30, 2020
    @WeaPoon 你忽略了 研表究明
    q8515620
        5
    q8515620  
       Jan 30, 2020 via Android   ❤️ 1
    @moshou 你忽略了 影阅响读
    jdhao
        6
    jdhao  
       Jan 30, 2020 via Android   ❤️ 1
    ocr 只是把文字位置检测出来,然后识别文字,对于规则排布的文本估计也可能提取意思。知道这个原理,你就能做出反 ocr 程序,一个思路,你把汉字排布弄乱一点,不要简单横排或者竖排(譬如波浪形状,或者更加复杂的形状),另外再加一些北京噪声,图片模糊效果,就可以防住很多 ocr 了。
    BigDataIsDead
        7
    BigDataIsDead  
       Jan 30, 2020 via iPhone
    Leetcode 猪年那道题算是最简单的加密吧……
    OceanSea
        8
    OceanSea  
       Jan 30, 2020   ❤️ 1
    将汉字在图片上随机排布、然后用一条线连起来表明阅读顺序
    yinanc
        9
    yinanc  
       Jan 30, 2020 via iPhone
    众所周知,验证码就是用来反 ocr 的
    kknd22
        10
    kknd22  
       Jan 30, 2020   ❤️ 1
    方正启功字体+缩小行间距,有奇效
    kknd22
        11
    kknd22  
       Jan 30, 2020   ❤️ 1
    类似 6 楼的字,字体不加修改,行距改为 0.5,效果如下:

    OCr 只是把又子位置检测出米,然后识别又子,对十郑则排币的又他订也可能疾取息思。知追这个尿性,你就能倾出 oCr 样序,一个思语,你把义子“排作弄机一点,个妥简单使排首竖排(管如波浪形状,者更川复杂的形状),另外再加一些北只栗户,图片模糊双果,就可以防任很多 Qr 了。
    kknd22
        12
    kknd22  
       Jan 30, 2020
    肉眼识别有略微障碍,但基本不影响阅读
    这就是好多网上防爬取小说的思路,当然,他还得增加文字转截图
    shilyx
        13
    shilyx  
       Jan 30, 2020
    base64
    或者自制码表的 base64
    yohanechan
        14
    yohanechan  
    OP
       Jan 30, 2020
    @jugelizi 哈哈,这也是个办法,但汉字最多移动 2~3 格,动多了就难读了
    yohanechan
        15
    yohanechan  
    OP
       Jan 30, 2020
    @kknd22 这只是替换为外形相似的文字,实现起来还得有庞大的数据库支持
    panda1001
        16
    panda1001  
       Jan 30, 2020 via Android
    用过 abbyy 的一些 ocr 就有经验了,比如单个文字在◇符号中间,就是文字的边缘加上干扰,虽然没有亲测 tx 的在线 ocr,但也提供这个思路
    superrichman
        17
    superrichman  
       Jan 30, 2020 via iPhone
    使用小众点的字体再加干扰线应该可以。

    另外,我记得有那种要从某个比较低的角度看才能看出文字的图。原理就是把文字垂直拉伸的很长,这种变形的厉害的文字应该也不会被识别。
    yohanechan
        18
    yohanechan  
    OP
       Jan 30, 2020
    谢谢大家的帮助,我找到了基本符合需求的产品 https://github.com/yuzu233/anti-ocr
    Buges
        19
    Buges  
       Jan 30, 2020 via Android   ❤️ 1
    这边建议直接用 GPG 呢
    kknd22
        20
    kknd22  
       Jan 30, 2020
    @yohanechan
    卧槽,这个效果真狠啊。。。
    suotm
        21
    suotm  
       Jan 30, 2020
    加干扰线或者颠倒文字方向
    autogen
        22
    autogen  
       Jan 30, 2020
    你需要的是,全自动区分计算机和人类的图灵测试。。。。
    有以下方式:
    填空:1 + 2 = __
    ----
    填空:我们的名称是___
    ----
    填空:出门要__口罩
    ----
    选择题:勾选以下图片中所有的啤酒
    ----
    操作题:把斜的图片旋转正
    ----
    操作题:拖动滑块完成验证
    vocaloid
        23
    vocaloid  
       Jan 30, 2020
    @yohanechan #18 他这个测试网站似乎无法打开
    gladuo
        24
    gladuo  
       Jan 30, 2020
    @yohanechan 划线确实 nb
    jdhao
        25
    jdhao  
       Jan 30, 2020 via Android
    @vocaloid 同无法打开
    jdhao
        26
    jdhao  
       Jan 30, 2020 via Android
    @yohanechan 他这个似乎只是把已有的图片干扰,如果你想传递文字信息,还是不行
    yohanechan
        27
    yohanechan  
    OP
       Jan 30, 2020
    @autogen 猫坐在毯子上,因为它很温暖。____很温暖?
    yohanechan
        28
    yohanechan  
    OP
       Jan 30, 2020
    @vocaloid
    @jdhao 可以 clone 到本地测试,他是输入文字输出图片
    tabris17
        29
    tabris17  
       Jan 30, 2020   ❤️ 1
    有个办法可以躲过通用 OCR 程序。

    原理就是利用 GIF 动态图片,两帧来回闪现,把每个字各切一半放在不同的两帧里

    如果是针对性的 OCR 就没办法了
    wpblank
        30
    wpblank  
       Jan 30, 2020
    类这子话以?
    似样说可吗
    akira
        31
    akira  
       Jan 30, 2020
    人肉 ocr
    tfdetang
        32
    tfdetang  
       Jan 30, 2020
    @yohanechan 其实理论上划线并不能规避把。我们训练 ocr 识别模型的时候都会加入干扰线样本进行对抗
    WeaPoon
        33
    WeaPoon  
       Jan 30, 2020
    @moshou #4 哈哈 还真是...
    zlowly
        34
    zlowly  
       Jan 31, 2020
    根据以往项目的经验(使用用 ABBYY 对含表格的扫描打印件进行 OCR),表格中的文字 ocr 识别率是大幅下降的,即使是表格附近的文字也有影响。所以可以尝试叠加一层表格上去试试看,对人眼应该影响不大的,但 ocr 出来肯定就是极多错别字。
    2kCS5c0b0ITXE5k2
        35
    2kCS5c0b0ITXE5k2  
       Jan 31, 2020
    近义字 异体字 或者单纯外号. 甚至外号的异体字和近义字 都可以吧
    dengyutongcn
        36
    dengyutongcn  
       Jan 31, 2020
    抽🐘话
    xuanbg
        37
    xuanbg  
       Jan 31, 2020
    火星文了解下,吱口令就是火星文的实际运用
    zhihupron
        38
    zhihupron  
       Jan 31, 2020
    我似乎知道楼主的意图了
    你是 qq 贴吧小广告的
    keventseng
        39
    keventseng  
       Jan 31, 2020
    研表究明,汉字的序顺并不定一能影阅响读,比如当你完看这话句后,才发这现里的字全是都乱的...
    HTSdTt3WygdgQQGe
        40
    HTSdTt3WygdgQQGe  
       Jan 31, 2020 via Android
    这 1 样 1 可 1 以 2 不
    pythonee
        41
    pythonee  
       Jan 31, 2020 via iPhone
    @q409640976 好主意,另外凯撒加密也是种办法吧
    charlie21
        42
    charlie21  
       Feb 1, 2020 via iPhone
    有点儿意思
    S1ngleton
        43
    S1ngleton  
       Mar 6, 2022
    楼主,可以试一下这个: //github.com/Leisurelybear/ocr-bye
    虽然界面简陋,后续准备加更多内容,包括点线之类的
    这是 Demo 页面: //leisurelybear.github.io/pages/ocr-bye/index.html
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2665 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 142ms · UTC 04:04 · PVG 12:04 · LAX 21:04 · JFK 00:04
    ♥ Do have faith in what you're doing.