wxocr/README.MD
golangboy 3909467809 doc
2025-03-25 19:22:46 +08:00

4.6 KiB
Raw Permalink Blame History

WeChat OCR API Docker

基于微信OCR引擎的Docker化REST API服务。

English | 中文

概述

本项目将优秀的wechat-ocr项目中的微信OCR功能包装成一个简单的REST API服务可以使用Docker轻松部署。它允许您利用微信强大的OCR功能对图像进行文字识别。

⚠️ 警告

这是一个仅用于学习和交流目的的开源项目。请勿将其用于商业活动。用户对因不当使用本项目而导致的任何后果负有全部责任。

版权声明: 本项目仅是对现有开源项目的容器化。如果您认为本仓库侵犯了您的版权或知识产权,请立即联系仓库所有者,仓库将会被迅速删除。我们尊重知识产权,无意侵犯任何权利。

致谢

本项目的实现离不开swigger及其wechat-ocr项目的工作。他们在逆向工程和创建微信OCR功能可用接口方面的努力构成了本服务的基础。

快速开始

使用Docker

# 拉取镜像
docker pull golangboyme/wxocr

# 运行容器
docker run -d -p 5000:5000 --name wechat-ocr-api golangboyme/wxocr

API使用

/ocr发送POST请求JSON负载中包含您的base64编码图像

curl -X POST http://localhost:5000/ocr \
  -H "Content-Type: application/json" \
  -d '{"image": "BASE64编码的图像数据"}'

示例响应

{
  "errcode": 0,
  "height": 72,
  "width": 410,
  "imgpath": "temp/5726fe7b-25d6-43a6-a50d-35b5f668fbb6.png",
  "ocr_response": [
    {
      "text": "aacss",
      "left": 80.63632202148438,
      "top": 29.634929656982422,
      "right": 236.47093200683594,
      "bottom": 55.28932189941406,
      "rate": 0.9997046589851379
    },
    {
      "text": "xxzsa",
      "left": 312.625,
      "top": 30.75,
      "right": 395.265625,
      "bottom": 55.09375,
      "rate": 0.997739315032959
    }
  ]
}

Python客户端示例

这是一个简单的Python客户端用于使用OCR API

import requests
import base64
import os

def ocr_recognize(image_path=None, image_url=None, api_url="http://localhost:5000/ocr"):
    """
    将图像发送到OCR API服务并获取识别结果。
    使用image_path或image_url需要提供其中一个    """
    # 获取图像数据
    if image_path:
        if not os.path.exists(image_path):
            print(f"错误:未找到本地图像:{image_path}")
            return
        with open(image_path, "rb") as image_file:
            img_data = image_file.read()
    elif image_url:
        try:
            response = requests.get(image_url)
            response.raise_for_status()
            img_data = response.content
        except Exception as e:
            print(f"下载图像失败:{str(e)}")
            return
    else:
        print("请提供image_path或image_url")
        return

    # 将图像转换为base64
    base64_image = base64.b64encode(img_data).decode('utf-8')
    
    # 发送请求到API
    try:
        response = requests.post(api_url, json={"image": base64_image})
        response.raise_for_status()
        return response.json()
    except Exception as e:
        print(f"API请求失败{str(e)}")
        return None

# 使用示例
if __name__ == "__main__":
    # 本地图像示例
    result = ocr_recognize(image_path="ocrtest.png")
    if result:
        print(result)
    
    # URL图像示例取消注释以使用
    # result = ocr_recognize(image_url="https://example.com/image.png")

项目结构

  • main.py处理OCR请求的Flask API服务
  • opt/wechat/wxocr微信OCR二进制文件
  • opt/wechat/:微信运行时依赖

技术细节

该服务使用Flask应用程序为微信OCR功能提供REST API接口。当提交图像时

  1. 解码base64编码的图像
  2. 创建临时文件
  3. 通过wcocr Python绑定由微信OCR引擎处理图像
  4. 以JSON格式返回结果
  5. 清理临时文件

限制

  • 目前仅支持PNG图像如需要可以扩展
  • 依赖于可能被微信更新的微信OCR二进制文件

许可证

本项目根据MIT许可证提供并附加以下条款

  1. 仓库所有者对本软件的任何使用不承担任何责任。
  2. 通过使用、复制、修改或分发本软件,您承认使用本软件的任何行为完全由您自行负责。
  3. 对本仓库及其内容的任何使用均由用户自行承担风险和责任。
  4. 仓库所有者对使用本软件产生的任何后果(法律上的或其他方面的)不承担责任。

贡献

欢迎贡献请随时提交Pull Request。