EasyOcr 安装(linux、docker)、使用(gin、python)

EasyOcr git地址

 EasyOCR是一款用python语言编写的OCR第三方库,同时支持GPU和CPU,目前已经支持超过70种语言. 

安装(CPU)

注意:

  • 本文是在仅在cpu下使用。如要使用CUDA版本,请在pytorch网站上选择正确的,并关闭此文章。(开玩笑,容器安装支持)
  • easyocr 不支持32位的python(经历了数个小时的血泪教训:python3.8-32)
  • 初次使用时,会自动下载所用到的模型,我们可以先下载easyocr所要用到的模型
  • 模型官网地址:估计你也不可用,我的百度网盘 提取码:vhsy

Windows

  • 安装 easyocr: pip3 install easyocr (安装除了模型文件之外的所有依赖)
  • 如果在安装Torch、Torchvision时出错:whl包 可按照自己的版本自行下载安装

Linux

  • 安装 easyocr: pip3 install easyocr (安装除了模型文件之外的所有依赖)
  • 博主在ubuntu:18.04上安装 西内!!!(遇到了本文最后的问题)
  • 直接git clone 源码,之后: sudo python3 setup.py install。ok!!!

模型存放位置

  • Windows:C:\Users\用户名.EasyOCR\model
  • Linux:~/ .EasyOCR / model

创建镜像,启动容器

  • 下载git中的Dockerfile

  • 创建镜像:

    mkdir easyocr
    # 把Dockerfile 放easyocr
    docker build -t easyocr .
    # 创建名为easyocr的镜像
    
  • 启动容器:

    docker run -d -p 18888:18888 -v /home/fxm/easyocr/:/home/fxm/easyocr/ --name ocr -it 镜像id /bin/bash
    # -d -p 18888:18888: 指定绑定本机端口(如果要启服务,需要开启,其他忽略)
    # -v /home/fxm/easyocr/:/home/fxm/easyocr/ 挂载目录,存放代码文件
    # --name easyocr 容器名为easyocr 
    

代码

test.py

import easyocr
import sys

# 创建reader对象
reader = easyocr.Reader(['en'], gpu=False)
# 读取图像
file_name = sys.argv[1]
result = reader.readtext(file_name, detail=0)
# 结果
print(result[0])

main.go

package main

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"os"
	"os/exec"
)

func main() {
	r := gin.Default()
	r.POST("/get_pic", func(c *gin.Context) {
		file, err := c.FormFile("pic")
		if err != nil {
			c.String(302, "没有图片")
			return
		}
		filename := file.Filename
		// 判断图片存在 删除
		if _, err := os.Stat(filename); err == nil {
			_ = os.Remove(filename)
		}
		if err := c.SaveUploadedFile(file, filename); err != nil {
			c.String(302, "图片保存异常", err)
			return
		}
		cmd := exec.Command("python3", "test.py", filename)
		// 执行命令,并返回结果
		output, err := cmd.Output()
		if err != nil {
			c.String(302, "图片异常", err)
			return
		}
		err = os.Remove(filename)
		if err != nil {
			fmt.Println("删除失败")
			c.String(302, "未知异常", err)
			return
		}
		_ = cmd.Wait()
		res := string(output[:len(output) - 1])
		c.String(200, res)
		return
	})
	_ = r.Run("0.0.0.0:18888") // listen and serve on 0.0.0.0:8080
}
  • 如不需服务 test.py放入easyocr文件夹下 即可
  • 将main.go 编译后放入easyocr文件夹下,进入容器,执行 编译后的执行文件

在这里插入图片描述

验证(python版本)

import requests

path = "1.jpg"
url = "http://ip:18888/get_pic"
files = {'pic': open(path, 'rb')}
r = requests.post(url=url, files=files).content.decode()
print(r)

在这里插入图片描述

问题

  • ModuleNotFoundError: No module named ‘skbuild’

     pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple scikit-build
    
  • Problem with the CMake installation, aborting build. CMake executable is cmake

     一:pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple cmake
     
     二:
     1. 下载最近的源
     git clone https://github.com/scikit-build/scikit-build cd scikit-build
     2. 开始安装
     pip install .
     
     # 采用上述方法之后仍然报错
    
以下是在 Linux 环境下使用 C++ 调用 easyocr 的基本步骤: 1. 安装 easyocr 可以通过 pip 命令来安装 easyocr,需要先安装Python 和 pip 工具。在终端中输入以下命令: ```bash pip install easyocr ``` 2. 编写 C++ 代码 在 C++ 代码中,需要使用Python 的 C API 来调用 easyocr。以下是一个简单的示例代码: ```c++ #include <Python.h> int main() { // 初始化 Python 解释器 Py_Initialize(); // 导入 easyocr 模块 PyObject *pModule = PyImport_ImportModule("easyocr"); // 获取 easyocr 函数对象 PyObject *pFunc = PyObject_GetAttrString(pModule, "easyocr"); // 调用 easyocr 函数 PyObject *pArgs = PyTuple_New(1); PyTuple_SetItem(pArgs, 0, PyUnicode_FromString("image.jpg")); PyObject *pResult = PyObject_CallObject(pFunc, pArgs); // 处理 easyocr 函数的返回值 if (PyList_Check(pResult)) { int len = PyList_Size(pResult); for (int i = 0; i < len; i++) { PyObject *pItem = PyList_GetItem(pResult, i); if (PyUnicode_Check(pItem)) { const char *text = PyUnicode_AsUTF8(pItem); printf("%s\n", text); } } } // 释放内存 Py_DECREF(pModule); Py_DECREF(pFunc); Py_DECREF(pArgs); Py_DECREF(pResult); // 关闭 Python 解释器 Py_Finalize(); return 0; } ``` 3. 编译 C++ 代码 在终端中输入以下命令来编译上面的示例代码: ```bash g++ -o test test.cpp -I /usr/include/python3.8/ -lpython3.8 ``` 其中,`-I` 参数指定 Python 头文件的路径,`-l` 参数指定 Python 库文件的名称。 4. 运行程序 在终端中输入以下命令来运行编译好的程序: ```bash ./test ``` 程序会读取当前目录下的 `image.jpg` 图片,并对其进行 OCR 识别,最后输出识别结果。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值