PaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库,助力开发者训练出更好的模型,并应用落地。

官方​开源项目地址:PaddlePaddle/PaddleOCR: Awesome multilingual OCR toolkits based on PaddlePaddle (practical ultra lightweight OCR system, support 80+ languages recognition, provide data annotation and synthesis tools, support training and deployment among server, mobile, embedded and IoT devices) (github.com)

一定会有小伙伴们看完不知道如何部署与应用,怎么才能融入到自己的产品或项目中​去。PaddleOCR是开源、免费、可离线部署的OC​R。

本文将介绍如何在windows平台上,自动化部署webAPI,并给出示例如何使用​。

第一步,要安装​Python环境。​下载地址:Download Python | Python.org

建议选择安装3.6~3.9版本,然后为了pip下载速度,把下面的文本内容,保存为pip.ini文件,存放到你的python安装目录下,​例如:C:\Users\username\AppData\Local\Programs\Python\Python39


[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host=mirrors.aliyun.com
第二步,把下面的批处理文件文本内容,保存为PaddleOCRWebAPI.bat文件,存放到你的电脑上任意目录下,然后双击运行,不出意外,你的PaddleOCR的WebAPI就部署​成功啦。
@echo off
COLOR 2F
title 公众号:明月心技术学堂
echo 本脚本演示如何在window境下一键部署PaddleOCR的WEBAPI功能。
echo 待脚本执行完后,将自动开一个OCR服务。url=127.0.0.1:5000/PaddleOCR/DetectText
echo 检测PYTHON安装
python -V
python -m pip install --upgrade pip pip3 install opencv-python==4.5.5.64
echo 开始安装PaddleOCR
pip3 install paddleocr echo 安装PaddleOCR的依赖预测库
pip3 install paddlepaddle
echo 安装Flask
pip3 install Flask
echo 安装DateTime
pip3 install DateTime set port=5000
set filename=PaddleOCRAPI.py
@echo off
del %filename%
echo import io >> %filename%
echo from pickle import DICT >> %filename%
echo import paddleocr >> %filename%
echo import json >> %filename%
echo import base64 >> %filename%
echo import DateTime >> %filename%
echo from flask import Flask, request,jsonify >> %filename%
echo import numpy as np >> %filename%
echo from PIL import Image >> %filename%
echo app=Flask(__name__) >> %filename%
echo app.config['JSON_AS_ASCII']=False >> %filename%
echo @app.route("/PaddleOCR/DetectText",methods=["POST"]) >> %filename%
echo def PaddleOCR(): >> %filename%
echo if(request.data==""): >> %filename%
echo return APIResult.Error("request data is null") >> %filename%
echo data=json.loads(request.data) >> %filename%
echo imgbyte=base64.b64decode(data) >> %filename%
echo image=io.BytesIO(imgbyte) >> %filename%
echo temp= Image.open(image) >> %filename%
echo img=np.array(temp)[:,:,:3] >> %filename%
echo info= ppocr.ocr(img) >> %filename%
echo result={"TextBlocks":[]} >> %filename%
echo for textblocks in info: >> %filename%
echo textBlock={"Points":[],"Text":""} >> %filename%
echo for tk in textblocks[0]: >> %filename%
echo point={"x":str(tk[0]),"y":str(tk[1])} >> %filename%
echo textBlock["Points"].append(point) >> %filename%
echo textBlock["Text"]=textblocks[1][0] >> %filename%
echo result["TextBlocks"].append(textBlock) >> %filename%
echo print(result) >> %filename%
echo return jsonify(result) >> %filename%
echo
echo def main(): >> %filename%
echo global ppocr; >> %filename%
echo ppocr=paddleocr.PaddleOCR(use_gpu=False); >> %filename%
echo app.run(debug=True,host="0.0.0.0",port=%port%) >> %filename%
echo if __name__=="__main__": >> %filename%
echo main(); >> %filename%
call %filename%

  在批处理执行如果遇到提示 core_avx,找不到指定的模块,这是应为vc++2017运行环境没有安装,你可以加入后面的QQ群,获取补丁文件,把【vc2017库文件】文件内的所有文件复制到Python安装目录下的【\Lib\site-packages\paddle\libs】的文件夹既可​。

上述OCR的服务启动以后,小伙伴是不是非常想试试看看OCR识别的结果呢​?

接下来介绍如何使用API,把下的文本内容另存为一个ClientPython.py文件,并把你想识别文字的图片,放在image文件夹下,双击运行保存的ClientPython.py文件,就可以看到识别的结果啦​!

import requests
import os
import base64
def main():
imagepath=os.path.abspath('.')+"\\image\\"
imagefiles=os.listdir(imagepath)
for image in imagefiles:
imagefile=imagepath+image
with open(imagefile,"rb") as fs:
imagebase64=str(base64.b64encode(fs.read()),"utf-8")
headers = { 'Content-Type': 'application/json'}
response = requests.post('http://127.0.0.1:5000/PaddleOCR/DetectText', headers=headers, json=imagebase64)
print(response.content)
if __name__=="__main__":
main();

  

​小伙伴们学会了吗?快来动手试试吧!

这里,再介绍一下C#如何调用WebAPI,看看C#如何使用,创建控制台程序,分别复制一下代码,同样在运行目录下准备好你的image文件夹​。

public class WebAPIClient
{
static string url = "http://localhost:5000/PaddleOCR/DetectText";
public static string DetectText(string base64)
{
RestClient client = new RestClient(url);
RestRequest req = new RestRequest() { Method = Method.Post };
req.AddBody(base64);
req.AddHeader("Content-Type", "application/json");
var resp = client.ExecuteAsync(req);

if (resp.Result.StatusCode != HttpStatusCode.OK)
{
throw new Exception("HttpError:" + resp.Result.StatusDescription);
}
return resp.Result.Content;
}

}

  

string[] extensions = new string[] { ".jpg", ".bmp", ".jpeg", ".png", ".tif", ".tiff" };
string imageroot = Environment.CurrentDirectory + "//image";
if (!Directory.Exists(imageroot)) Directory.CreateDirectory(imageroot);
DirectoryInfo directoryInfo = new DirectoryInfo(imageroot);
var files = directoryInfo.GetFiles("*.*");

DateTime dt1;
DateTime dt2;
foreach (var file in files)
{ if (!extensions.Contains(file.Extension.ToLower())) continue;
byte[] imagebyte = File.ReadAllBytes(file.FullName);
string base64 = Convert.ToBase64String(imagebyte);
dt1 = DateTime.Now;
var s = WebAPIClient.DetectText(base64); dt2 = DateTime.Now;
Console.WriteLine((dt2-dt1).TotalMilliseconds); Console.WriteLine(s);

欢迎关注公众号了解更多​内容。

更多代码前往开源项目地址了解:PaddleOCRWebAPI: PaddleOCRWebAPI是 PaddleOCRSharp的web应用。 项目使用VS2022及以上版本编译,使用net6.0框架。模型默认带有一个轻量版中英文V3模型库。 (gitee.com)

如何在Windows上一键部署PaddleOCR的WebAPI服务的更多相关文章

  1. 如何在windows上安装部署设置SVN服务器

    1   一.准备工作 1.SVN服务器:解压缩包,可以从官方网站下载最新版本. 2.SVN客户端:TortoiseSVN,即常说的小乌龟,是一个客户端程序,用来与服务器端通讯. 2 二.安装服务器和客 ...

  2. (转)如何在Windows上安装多个MySQL

    原文:http://www.blogjava.net/hongjunli/archive/2009/03/01/257216.html 如何在Windows上安装多个MySQL 本文以免安装版的mys ...

  3. Redis简介以及如何在Windows上安装Redis

    Redis简介 Redis是一个速度非常快的非关系型内存数据库. Redis提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erla ...

  4. 如何在Windows上搭建Android开发环境

    Android开发越来越火,许多小伙伴们纷纷学习Android开发,学习Android开发首要任务是搭建Android开发环境,由于大家 主要实在Windows 上开发Android,下面就详细给大家 ...

  5. 如何在Windows上挂载Linux系统分区

    NFS普遍用于unix之间共享,windows默认是不支持这种文件系统的.如果我们要用windows访问NFS的话,而windows系统自身又不支持这种文件系统,那么我们该怎么办? 别急,小编这就手把 ...

  6. Zabbix agent 在windows上安装部署

    Zabbix agent 在windows上安装部署 1.下载与解压 地址: http://www.zabbix.com/downloads/2.4.4/zabbix_agents_2.4.4.win ...

  7. 在windows 上编译部署Rap2

    在windows 上编译部署Rap2 引言 安装需要的环境 安装后端站点 创建数据库 在全局安装pm2 和 typescript 配置mysql,redis 数据库链接配置 初始化 编译 初始化数据库 ...

  8. 如何在windows上把你的项目提交到github(转载)

    (1)如何在windows上把你的项目提交到githubhttp://michaelye1988.iteye.com/blog/1637951 (2)github错误提示:fatal:remote o ...

  9. Primecoin在windows上的部署和启动服务

     Primecoin在windows上的部署和启动服务: 一.从官方获得Primecoin的windows版安装包: 二.一路像安装客户端一样的安装: 三.安装成功后它会自动弹出客户端运行,同步数据, ...

  10. MongoDb进阶实践之二 如何在Windows上配置MongoDB

    一.引言            上一篇文章,我介绍了如何在Linux系统上安装和配置MongoDB,其实都不是很难,不需要安装和编译,省去了Make && Make Install 命 ...

随机推荐

  1. redis 简单整理——HyperLogLog[十三]

    前言 简单介绍一下HyperLogLog. 正文 HyperLogLog并不是一种新的数据结构(实际类型为字符串类型),而 是一种基数算法,通过HyperLogLog可以利用极小的内存空间完成独立总数 ...

  2. python3中os.renames()和os.rename()区别

    renames源码:def renames(old, new): head, tail = path.split(new) # 作用是分割为两部分,head为路径,tail为文件名: if head ...

  3. 实现JWT鉴权机制

    一.是什么 JWT(JSON Web Token),本质就是一个字符串书写规范,如下图,作用是用来在用户和服务器之间传递安全可靠的信息 在目前前后端分离的开发过程中,使用token鉴权机制用于身份验证 ...

  4. 手写一个Mybatis框架

    第一:Mybatis框架介绍 最近看了一篇关于Mybatis的文章,发现MyBatis框架的核心功能其实不难,无非就是动态代理和jdbc的操作,难的是写出可扩展,高聚合,低耦合的规范的代码. 本文手写 ...

  5. 图片验证码识别,标签中onehot编码对应多个1怎么做?

    一张验证码图片直接做整体识别 也就是图片的最后输出节点有4*26=104个,经过一个softmax,使用交叉熵损失,与真实值4*26=104个标签做计算,然后反向传播 104个onehot编码真实值当 ...

  6. 配置服务器SSH PAM防止暴力破解

    正常机器如果开启ssh可能会被暴力破解用户密码,可以配置ssh的pam限制登录失败时可以锁定用户一段时间,就算密码输入正确也无法登录,等恢复之后才可以再次进入,对于不同的发行版配置可能略有不同,对于r ...

  7. 《c#高级编程》第5章C#5.0中的更改(十一)——字符串插值

    在 C# 5 中,引入了字符串插值(string interpolation)语法,它提供了一种简单.直观的方式来将变量的值嵌入到字符串中.在以前的版本中,我们需要使用字符串格式化功能来实现这个目的, ...

  8. 力扣1082(MySQL)-销售分析Ⅰ(简单)

    题目: 产品表:Product 销售表:Sales 编写一个 SQL 查询,查询总销售额最高的销售者,如果有并列的,就都展示出来. 以 任意顺序 返回结果表. 查询结果格式如下所示. Product ...

  9. 剑指offer04(Java)二维数组中的查找(中等)

    题目: 在一个 n * m 的二维数组中,每一行都按照从左到右 非递减 的顺序排序,每一列都按照从上到下 非递减 的顺序排序.请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有 ...

  10. watch对比computed

    总结:      computed和watch之间的区别:             1.computed能完成的功能,Watch都可以实现             2.watch能完成的功能,comp ...