V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
bybyte
V2EX  ›  分享创造

把微信的 OCR 功能提取出来做 Docker 服务

  •  3
     
  •   bybyte ·
    golangboy · 1 天前 · 16485 次点击

    众所周知,微信的 OCR 识别又快又准,于是就想提出来代替某某桨的识别

    https://github.com/golangboy/wxocr

    docker 拉取下来 直接 post 请求即可

    docker pull golangboyme/wxocr
    
    curl -X POST http://localhost:5000/ocr \
      -H "Content-Type: application/json" \
      -d '{"image": "BASE64_ENCODED_IMAGE_DATA"}'
    
    187 条回复    2025-03-26 18:14:51 +08:00
    1  2  
    csx163
        1
    csx163  
       1 天前
    nb ,不知道是不是和 win 版微信一个代码
    liuliuliuliu
        2
    liuliuliuliu  
       1 天前
    啊哈哈哈 牛逼 这个套路可以
    maocat
        3
    maocat  
       1 天前 via Android
    你是真的牛
    GetOctober
        4
    GetOctober  
       1 天前
    哈哈哈 牛牛牛 赶快试试
    Numbcoder
        5
    Numbcoder  
       1 天前
    🐂🍺,好奇怎么实现的,图片会发到微信服务器吗?
    x2ve
        6
    x2ve  
       1 天前
    需要联网吗
    xuangoer666
        7
    xuangoer666  
       1 天前 via Android
    南山必胜客警告
    zgsi
        8
    zgsi  
       1 天前
    好家伙,不需要鉴权吗?
    someonesnone
        9
    someonesnone  
       1 天前
    南山必胜客警告 +1
    Blanke
        10
    Blanke  
       1 天前
    楼上的都不看看代码的吗,本地实现,用 ocr 模型这样实现的
    bybyte
        11
    bybyte  
    OP
       1 天前   ❤️ 2
    @x2ve 不用全本地
    gbw1992
        12
    gbw1992  
       1 天前
    🐂🐸
    bybyte
        13
    bybyte  
    OP
       1 天前
    各位可以进去看看 README 先,本地模型实现的
    cmsyh29
        14
    cmsyh29  
       1 天前
    🐮
    GetOctober
        15
    GetOctober  
       1 天前
    @bybyte 尝试了一下,返回结果是空:
    ```
    {'result': {'errcode': 0, 'height': 190, 'imgpath': 'temp/ed9b119d-dc84-4a77-b3d2-8cd053e62fe5.png', 'ocr_response': [], 'width': 930}}
    ```
    ik
        16
    ik  
       1 天前 via iPhone
    大哥,哈啤酒🍻
    bybyte
        17
    bybyte  
    OP
       1 天前
    @GetOctober 这返回错误码是正常只是没识别到文字吧,是不是你图片上没文字?换张图试试?我这边测过了
    wqsdfdddd
        18
    wqsdfdddd  
       1 天前
    图片翻译能提取出来不?
    感觉它的翻译效果挺好的, 主要是能保持原有样式
    565656
        19
    565656  
       1 天前 via iPhone   ❤️ 1
    @csx163 微信现在三端同代码了
    bybyte
        20
    bybyte  
    OP
       1 天前
    @xuangoer666 我只是把一个大佬的项目整合一下,应该不会吧,有先例吗,有我就删库了
    keller
        21
    keller  
       1 天前
    666 下午试试
    sunfly
        22
    sunfly  
       1 天前
    牛逼趁着删库前赶紧 clone 下来
    woshivu
        23
    woshivu  
       1 天前
    我去,我怎么感觉微信的 ocr 不如其他的识别精准呀
    leyoumake1997
        24
    leyoumake1997  
       1 天前
    牛娃
    GetOctober
        25
    GetOctober  
       1 天前
    https://imgur.com/a/uk6an1c
    @bybyte 这个是测试的图片
    bigtear
        26
    bigtear  
       1 天前 via Android
    不错的项目,starstar
    bybyte
        27
    bybyte  
    OP
       1 天前
    @GetOctober 我测试返回:OCR 识别成功!结果如下:
    {'errcode': 0, 'height': 190, 'imgpath': 'temp/4ec69547-1144-42ec-9911-dc1c4c932d01.png', 'ocr_response': [{'bottom': 74.109375, 'left': 36.328125, 'rate': 0.9704948663711548, 'right': 714.9375, 'text': 'WeChat OCR API Docker 微信 OCR API Docker', 'top': 43.59375}, {'bottom': 124.96875, 'left': 36.328125, 'rate': 0.9854483604431152, 'right': 614.671875, 'text': "A Dockerized REST APl service for text recognition using WeChat's OCR engine.", 'top': 108.984375}, {'bottom': 158.390625, 'left': 37.78125, 'rate': 0.9666333198547363, 'right': 494.0625, 'text': '使用微信 OCR 引擎进行文本识别的 Dockerized REST API 服务。', 'top': 139.5}], 'width': 930}
    maxwel1
        28
    maxwel1  
       1 天前
    哈哈哈,腾讯出了个 linux 版本亏大了,还有薅腾讯羊毛的。不过微信不同客户端的代码实现不太一样,不知道跟移动端是不是一样效果
    lovestudykid
        29
    lovestudykid  
       1 天前
    微信的条码、二维码识别也是遥遥领先,试过很多 AppStore 里专门的条码扫描 APP ,都不如微信。要是能做成一个单独的 APP 就好了。
    bigtan
        30
    bigtan  
       1 天前
    我看似乎跟 https://modelscope.cn/models/iic/cv_convnextTiny_ocr-recognition-general_damo 这个项目很像。我在本地部署了一个验证码识别的服务,用的是 https://huggingface.co/xiaolv/ocr-captcha, 基于读光训练的。
    dbit
        31
    dbit  
       1 天前
    确实有的图片一个字也识别不出来
    sunnysab
        32
    sunnysab  
       1 天前
    @lovestudykid #29 微信(手机版)的二维码识别貌似用云端的。记得看到过相关技术文章,而且实际也能感觉出来。
    dbit
        33
    dbit  
       1 天前
    @GetOctober #25 这个图片我试了也识别不出来
    MonkeyJon
        34
    MonkeyJon  
       1 天前
    我刚准备执行,发现公司不让用 docker ,已经卸载了
    swat199538
        35
    swat199538  
       1 天前
    @sunnysab 求技术文章,最近在优化公司的条形码识别和二维码识别速度
    yulgang
        36
    yulgang  
       1 天前
    🐂🍺
    letitbesqzr
        37
    letitbesqzr  
       1 天前
    wxocr-master docker run -p 5000:5000 --name wechat-ocr-api golangboyme/wxocr

    OCR4: OCR not supported


    不支持 linux 么?
    lengrongec
        38
    lengrongec  
       1 天前
    一键封神
    cheese
        39
    cheese  
       1 天前
    @lovestudykid 真*遥遥领先,又快又准
    break2002
        40
    break2002  
       1 天前
    感谢,不会代码的人也用上了.
    lovestudykid
        41
    lovestudykid  
       1 天前
    @sunnysab 应该不是云端的,你看一下这个 repo 基于的 repo 就知道了,二维码识别的接口也逆向出来了
    xuangoer666
        42
    xuangoer666  
       1 天前 via Android
    @bybyte #20 不好意思哈,没细看,看标题以为你是逆向了微信
    kk2syc
        43
    kk2syc  
       1 天前
    @swat199538 别想了。只是提取了 OCR 模型出来用,模型本身是黑盒,你用到公司里准备吃官司
    newbee2000
        44
    newbee2000  
       1 天前
    怎么用呢,docker 部署完之后提示
    OCR4: OCR not supported

    * Serving Flask app 'main'

    OCR4: OCR not supported
    ik
        45
    ik  
       1 天前
    我用 Linux 也识别不出来 #25 这个图片 , 好奇怪
    bybyte
        46
    bybyte  
    OP
       1 天前
    @newbee2000
    @letitbesqzr
    @GetOctober 我在本地 window+docker 测试的都能正常,在云服务器上测试也是错误码 0 但是结果空,我猜测可能是不是模型用到什么硬件相关的 future 但是主机没提供所以出现这个问题
    zqqian
        47
    zqqian  
       1 天前
    LZ 的项目确实有 bug ,好几个图片都是返回空,跟 15 楼的结果一样
    zggsong
        48
    zggsong  
       1 天前   ❤️ 1
    我是做成了 C#库、里面带个 demo 挺好用
    https://github.com/ZGGSONG/WeChatOcr
    shoaly
        49
    shoaly  
       1 天前
    期待一个二维码的版本出来
    letitbesqzr
        50
    letitbesqzr  
       1 天前   ❤️ 2


    用 cursor 画了一个 ui 出来.. 这套接口确实好用.. 位置准确 速度快
    Tink
        51
    Tink  
       1 天前
    没 arm64 的 image 吗
    TheGreatSage
        52
    TheGreatSage  
       1 天前
    老哥,方便给个 tar 包嘛,某些原因无法在服务器上科学上网
    SakuraYuki
        53
    SakuraYuki  
       1 天前
    @GetOctober #25 这个没啥识别难度吧,我用苹果自带的离线 ocr 识别出来是:WeChat OCR API Docker 微信 OCR API Docker

    A Dockerized REST API service for text recognition using WeChat's OCR engine.

    使用微信 OCR 引擎进行文本识别的 Dockerized REST AP ! 服务。 就最后那个 api 的 i 被下划线影响识别成感叹号了
    yishibakaien
        54
    yishibakaien  
       1 天前
    老哥,我本地 mac 起了 docker 后,调用接口报错呀,提了 issue 帮忙看看
    keller
        55
    keller  
       1 天前
    win11 wsl2 部署成功,测试了 2 张图都能识别, 很棒!
    paopjian
        56
    paopjian  
       1 天前
    微信的相比于 paddleocr 速度更快更精准,还可以部署到 linux 上?
    bybyte
        57
    bybyte  
    OP
       1 天前
    @letitbesqzr
    @newbee2000 https://github.com/swigger/wechat-ocr/issues/36 看看你处理器支不支持 avx2 cat /proc/cpuinfo | grep -o avx2 | uniq
    Heng20
        58
    Heng20  
       1 天前
    牛逼!
    GetOctober
        59
    GetOctober  
       1 天前
    @bybyte 支持
    keller
        60
    keller  
       1 天前
    25 楼的图我测试也没啥问题

    {
    "result": {
    "errcode": 0,
    "height": 190,
    "imgpath": "temp/751a6b59-dc79-485c-93e0-94e0bf4bf7ae.png",
    "ocr_response": [
    {
    "bottom": 74.109375,
    "left": 36.328125,
    "rate": 0.9704948663711548,
    "right": 714.9375,
    "text": "WeChat OCR API Docker 微信 OCR API Docker",
    "top": 43.59375
    },
    {
    "bottom": 124.96875,
    "left": 36.328125,
    "rate": 0.9854483604431152,
    "right": 614.671875,
    "text": "A Dockerized REST APl service for text recognition using WeChat's OCR engine.",
    "top": 108.984375
    },
    {
    "bottom": 158.390625,
    "left": 37.78125,
    "rate": 0.9666333198547363,
    "right": 494.0625,
    "text": "使用微信 OCR 引擎进行文本识别的 Dockerized REST API 服务。",
    "top": 139.5
    }
    ],
    "width": 930
    }
    }
    Goalonez
        61
    Goalonez  
       1 天前
    微信截图后的翻译也挺好用的,直接在原图上翻译
    zdw189803631
        62
    zdw189803631  
       1 天前
    为啥我运行了后,用 nodejs 去请求 /ocr 返回 403 啊 ,求解惑
    asmoker
        63
    asmoker  
       1 天前
    我操,好使啊,还快,比 pd 啥 ocr 不知道高到哪里去了 😄
    iorilu
        64
    iorilu  
       1 天前
    原始版本是怎么出来得

    不可能逆向 wechat 得把
    Songxwn
        65
    Songxwn  
       1 天前
    支持,给星星了
    BreezeConfirming
        66
    BreezeConfirming  
       1 天前
    呜呼谢谢楼主。从隔壁来的,之前就看到 issue 有说 linux ocr 实现了那不进一步 docker 。之前一直想做奈何没有技术力,现在真的造福社区了!
    IssacTseng
        67
    IssacTseng  
       1 天前
    能否把微信的截图和 OCR 一起提出来做成一个独立软件,这样就完美了。。。
    A3m0n
        68
    A3m0n  
       1 天前
    @letitbesqzr 和楼主合作下,把这个 U I 做进 Docker 里面。
    blushyes
        69
    blushyes  
       1 天前
    不能商用吗?
    gwy15
        70
    gwy15  
       1 天前
    mark 一下,看看能不能对接到 mtphotos
    3499
        71
    3499  
       1 天前
    TanKuku
        72
    TanKuku  
       1 天前
    {"error":"400 Bad Request: The browser (or proxy) sent a request that this server could not understand."}
    Darley
        73
    Darley  
       1 天前
    只是做识别放不进应用场景啊,我用的图片理解大模型,直接 json 输出想要的格式
    sn0wdr1am
        74
    sn0wdr1am  
       1 天前
    没有开源协议,有侵权风险。

    年轻人就是猛,抄起键盘就是干。

    南山必胜客都不怕。
    TanKuku
        75
    TanKuku  
       1 天前
    @TanKuku #69 换了一个转换 base64 的工具,就 ok 了
    gorira
        76
    gorira  
       1 天前
    日文韩文效果怎么样?可以的话是个翻译本子的好利器(
    daimaosix
        77
    daimaosix  
       1 天前
    牛逼,非常好用!配上 czyt 大哥提供的前端屌爆了!
    iorilu
        78
    iorilu  
       1 天前
    看这 docker 实现, 意思是可以在 linux 脱离安装微信

    在 win 上能不能做到

    意思就是只放必要得文件, 不一定安装微信, 这样可以独立做成一个软件包, 供 python, c 等其他语言直接调用
    lloovve
        79
    lloovve  
       1 天前 via iPhone
    Docker 下不了了
    bzj
        80
    bzj  
       1 天前
    楼主好人,微信那个软件基本上废了
    simo
        81
    simo  
       1 天前
    一直想做没做的事儿,你搞出来了,nb !
    yiqiao
        82
    yiqiao  
       1 天前
    佩服楼上的行动力。
    superhuai11
        83
    superhuai11  
       1 天前
    mac !!!
    paradoxs
        84
    paradoxs  
       1 天前
    希望能增加一个功能:支持直接上传本地 pdf 文件(自带 pdf 转 base64 )

    这个功能非常重要。 不然要我们一张一张图片手动的去转 base64 ,很麻烦。
    conglovely
        85
    conglovely  
       1 天前
    楼上老哥的行动力是真强
    imNull
        86
    imNull  
       1 天前
    每次使用次数不多的 macOS 用户也可以试试我开发的这个 https://www.v2ex.com/t/1117414
    bybyte
        87
    bybyte  
    OP
       1 天前
    @blushyes
    @sn0wdr1am 已经补上协议了,可不敢,南山给我发个邮件我立马就删了
    roding
        88
    roding  
       1 天前
    支持一下!
    Liqiniu
        89
    Liqiniu  
       1 天前
    🐂🐸
    GetOctober
        90
    GetOctober  
       1 天前
    @bybyte linux 不能执行问题解决了,应该是你编译的 wcorc 存在问题
    V3geD4g
        91
    V3geD4g  
       1 天前
    使用 docker run -d -p 5000:5000 --name wechat-ocr-api golangboyme/wxocr 命令 启动失败,查看 log 报错 OCR4: OCR not supported 是咋回事呢
    Guidoo
        92
    Guidoo  
       1 天前
    接口不错,我用 NextJs 做了一个页面 效果如下:

    zjun5556
        93
    zjun5556  
       1 天前
    我就说逛 v 站能学到好东西
    unco020511
        94
    unco020511  
       1 天前
    这个在 windows 上能运行吗
    lizhenda
        95
    lizhenda  
       1 天前
    真厉害,能不能搞成个库调用
    ko20
        96
    ko20  
       1 天前
    OP 可以帮我看看为什么 OCR 失败了吗,如下图

    https://image.940304.xyz/i/2025/03/25/67e26fd5b19b8.jpg

    自部署了,但是返回如下

    ```
    {"result":{"errcode":6,"height":0,"imgpath":"temp/6ff6e294-115f-4cf2-b897-1e2143f50761.png","ocr_response":[],"width":0}}

    ```

    看了一下容器日志,如下

    ```
    xxx - - [25/Mar/2025 08:39:34] "POST /ocr HTTP/1.1" 200 -
    xxx - - [25/Mar/2025 08:41:44] "GET /ocr HTTP/1.1" 405 -
    xxx - - [25/Mar/2025 08:41:44] "GET / HTTP/1.1" 404 -
    xxx - - [25/Mar/2025 08:41:44] "GET / HTTP/1.1" 404 -
    xxx - - [25/Mar/2025 08:42:44] "GET /ocr HTTP/1.1" 405 -
    xxx - - [25/Mar/2025 08:44:36] "POST /ocr HTTP/1.1" 200 -
    ```
    000sitereg
        97
    000sitereg  
       1 天前
    star fork 一气呵成
    wq2016
        98
    wq2016  
       1 天前
    我想要语音识别 - -
    macaodoll
        99
    macaodoll  
       1 天前
    人才......
    mywaiting
        100
    mywaiting  
       1 天前
    这个想法我也有过,啧啧,这行动力简直爆炸!
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3728 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 10:22 · PVG 18:22 · LAX 03:22 · JFK 06:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.