首页 > 系统相关 >如何在Windows上一键部署PaddleOCR的WebAPI服务

如何在Windows上一键部署PaddleOCR的WebAPI服务

时间:2022-09-24 10:33:46浏览次数:84  
标签:WebAPI __ Windows PaddleOCR base64 echo import filename%

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("/WebAPI/PaddleOCR",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)

 

标签:WebAPI,__,Windows,PaddleOCR,base64,echo,import,filename%
From: https://www.cnblogs.com/raoyutian/p/16725070.html

相关文章

  • win10: Windows Audio无法启动 错误 0x80070005:拒绝访问
    进入目录C:\Windows\System32,找到cmd.exe,右键->以管理员身份运行在cmd窗口中输入:netlocalgroupAdministrators/addnetworkservice,回车在cmd窗口中输入:netlocalg......
  • Windows10 操作系统里数量众多的 svchost.exe
    如果各位的计算机使用的是Windows10操作系统,请尝试以下操作:使用Ctrl+Shift+Esc热键或右键单击任务栏并选择“任务管理器”选项打开任务管理器。现在单击“详细信息......
  • windows 软链接的建立及删除
    1.mklink用法  2.创建软链接##建立d:develop链接目录,指向远程的目标服务器上的e盘的对应目录。mklink/Dd:\develop\\138.20.1.141\e$\develop##建立d:devel......
  • windows清理桌面右键菜单中新增选项中的多余选项
    在卸载坚果云时一开始没注意,最近在使用的时候发现右键新增的里面出现了.nol等坚果云的文件,于是找了一下能删除多余选项的方法。感觉自己以后还能用到所以记下来方便自己查......
  • windows server 2012 中怎么进行NIC组合
    NIC组合就是把同一台服务器上的多个物理网卡通过软件绑定成一个虚拟的网卡,也就是说,对于外部网络而言,这台服务器只有一个可见的网卡。对于任何应用程序,以及本服务器所在的网......
  • windows下的activemq的使用记录
    1、ActiveMq软件包下载下载地址:ActiveMQ(apache.org)  https://activemq.apache.org/components/classic/download/ 2、安装Java环境3、修改IP,供外网访......
  • windows常用命令
    ifconfig/all获取获取域名、IP地址、DHCP服务器、网关、MAC地址、主机名nettime/domain查看域名、时间netview/domain查看域内所有共享netviewip查看对方局......
  • windows服务器设置自动登录
    首先单击“开始运行”,在输入框中键入“regedit”打开注册表编辑器,然后在注册表编辑器左方控制台中依次单击展开“HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/WindowsNT/......
  • 使用nssm将exe程序或bat封装成windows服务
    nssm是一个轻量级服务封装程序,它可以将普通exe或bat程序封装成windows服务,使之像windows服务一样运行。同类型的工具还有微软自己的srvany,不过nssm更加简单易用,并且功能强......
  • 记录Windows下安装beego遇到的问题
    一、安装步骤1.任何位置创建一个文件夹2.cmd方式进入创建的文件夹、或者使用Golang编辑器打开(我就是用Golang打开的)3.在编辑器的命令行下依次输入如下代码#初始化项......