使用Go + Tesseract-OCR 实现文字识别的通用服务

目录结构

│  .gitignore
│  docker-compose.yml
│  Dockerfile
│  main.go
│  readme.md
├─.docker
│      docker-compose.yaml
├─tesseract
│      .gitkeep

其中.docker目录不是必须的,是配合docker-desktop一起用的,一个go的开发环境

其中docker-compose.yml文件中networks的定义,为了与其他docker-compose.yml网络互通,使用了外部网络。如果不需要多个docker-compose互通,可以修改一下

version: '3'
networks:
  web-network:

services:
  docker-tesseract:
    ...
    networks:
      - web-network

步骤

#1. 构建镜像 Dockerfile
docker build -t my/tesseract-ocr .

#2. 修改镜像名
vi docker-compose.yml
    image: my/tesseract-ocr

#3. 运行
docker-compose up -d

main.go

对外提供一个接口/ocr?url=http://xx.com/aa.jpg

测试

O1CN01VyT2bg28nW5QYxtLr_!!22109865379770cib.jpg

浏览器访问http://localhost:8000/ocr?url=http://xx.com/aa.jpg

{
    "code": 200,
    "msg": "success",
    "data": {
        "tips": "Warning: Invalid resolution 0 dpi. Using 70 instead.\nEstimating resolution as 197\n",
        "content": "PHOTOGRAPH\n产品实拍\n\n由于拍摄光线以及显示器等因素影响,可能会导致图片与实物颜色\n有细微信差,最终颜色以实物为准。\n\u000c",
        "url": "http://xx.com/aa.jpg"
    }
}

后来发现,在没优化的前提下,chineseocr_lite的效果会更好,详见 http://www.cuiwei.net/p/1052444754

代码

https://github.com/chudaozhe/go-tesseract-ocr

感谢阅读这篇文章,如果你喜欢,或者遇到了问题,可以关注我的公众号