Skip to content
/ wxocr Public
forked from golangboy/wxocr

This project wraps the WeChat OCR functionality from the excellent wechat-ocr project into a simple REST API service that can be easily deployed using Docker. It allows you to perform optical character recognition on images by leveraging WeChat's powerful OCR capabilities.

Notifications You must be signed in to change notification settings

skusdk/wxocr

 
 

Repository files navigation

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。

About

This project wraps the WeChat OCR functionality from the excellent wechat-ocr project into a simple REST API service that can be easily deployed using Docker. It allows you to perform optical character recognition on images by leveraging WeChat's powerful OCR capabilities.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 79.8%
  • Dockerfile 20.2%