摸鱼写了一个文本混淆器,现代 OCR 都发展的这么快了吗 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tukon479
V2EX    前端开发

摸鱼写了一个文本混淆器,现代 OCR 都发展的这么快了吗

  •  
  •   tukon479
    innei 2021-05-12 14:05:52 +08:00 2315 次点击
    这是一个创建于 1691 天前的主题,其中的信息可能已经有所发展或是发生改变。
    div class="topic_content">

    昨天突然想起某天看到微信读书(记忆不清了)为了防止用户复制,采用了一种方式,把每个字都绝对定位,从而达到视觉上通顺,实际上是乱序的。大概如下图所示。

    0512135651

    然后我尝试用 OCR 软件去识别,标准字体的话准确率很高不稀奇。我又换了一个手写体去试。macOS 自带的手札体。

    意外发现不规则字体识别率也很高。

    0512140535

    对了,地址在这: https://innei.github.io/shuffle-article/

    13 条回复    2021-05-22 13:00:09 +08:00
    Maboroshii
        1
    Maboroshii  
       2021-05-12 14:08:28 +08:00
    有意思
    imdong
        2
    imdong  
       2021-05-12 14:10:43 +08:00
    之前做过一个小说网站的识别,也是类似的方式,我的做法是:

    从 html 中取出每个字的位置,然后按行列排序,最后重新整理顺序就可以还原了.

    而且从你截图来看的话,比那个网站还少了基础 css 样式偏移,那个是每个字都有一个 class 和 style 的,两个变量的漂移相加的.
    Maboroshii
        3
    Maboroshii  
       2021-05-12 14:11:11 +08:00
    不过试了下浏览器缩放,混淆后的内容的位置就跑了
    tukon479
        4
    tukon479  
    OP
       2021-05-12 14:16:23 +08:00
    @Maboroshii 对,因为绝对定位,所以 resize 要加监听器,重新计算
    tukon479
        5
    tukon479  
    OP
       2021-05-12 14:17:19 +08:00
    @imdong 有代码可以学习学习吗
    est
        6
    est  
       2021-05-12 14:20:40 +08:00
    2012 年,cv 届发生了一件大事,人类的命运就从此发生了巨大改变。以至于到了 9 年后的今天,LZ 才发帖感叹技术进步如此之快
    imdong
        7
    imdong  
       2021-05-12 14:33:31 +08:00
    (cOntent=> {
    let span_list = content.querySelectorAll('span'),
    map = [], full_text = "";
    span_list.forEach(span => {
    let left = parseInt(span.style.left),
    top = parseInt(span.style.top);
    map[top] = map[top] || [];
    map[top][left] = span.innerText;
    });

    map.forEach(line => {
    line.forEach(text => {
    full_text += text
    });
    })

    console.log(full_text)
    })(document.getElementById('renderTargetContent'))
    goodryb
        8
    goodryb  
       2021-05-12 16:27:51 +08:00
    居然还有这种操作,第一次听说
    murmur
        9
    murmur  
       2021-05-12 16:46:35 +08:00
    如果考虑到做字体替换和位置改动的,应该也有其他反扒策略把
    tukon479
        10
    tukon479  
    OP
       2021-05-12 19:47:59 +08:00
    @est 对于手写体的识别有点惊到。
    tukon479
        11
    tukon479  
    OP
       2021-05-12 19:49:56 +08:00
    @imdong 加上基础 css 样式偏移的话可以用 `getBoundingClientRect` 获取位置,在计算得出。
    q197
        12
    q197  
       2021-05-20 15:40:00 +08:00
    用的什么 ocr 软件?

    完全不允许复制感觉有些过头,毕竟读书还要摘抄(滑稽),而且这样无障碍功能估计就彻底不能用了。

    @est 能具体说说吗
    tukon479
        13
    tukon479  
    OP
       2021-05-22 13:00:09 +08:00
    @q197 mac 上的 TextSniper https://textsniper.app/
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3274 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 04:58 PVG 12:58 LAX 20:58 JFK 23:58
    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