chineseocr项目不使用web推理-docker容器化

整个流程介绍

  1. 拉取 ufoym/deepo 镜像 -- 因为包含了主流深度学习框架,镜像4G出头。
  2. 拉取 chineseocr 项目代码。
  3. 修改代码,不使用web,增加命令行传入图片路径的功能
  4. 打包成docker镜像。

开始

拉取 ufoym/deepo 镜像 :cpu版本为例

docker hub地址:(好像需要梯子)

https://hub.docker.com/r/ufoym/deepo

docker pull ufoym/deepo:cpu
拉取 chineseocr 项目代码

项目:https://github.com/chineseocr/chineseocr

git clone https://github.com/chineseocr/chineseocr.git
修改代码,不使用web,增加命令行传入图片路径的功能

先 run 一个容器:

docker run -itd -v /home/wind/winds/ocr/chineseocr-app:/data --name ocr ufoym/deepo:cpu

 进入容器开发:

docker exec -it ocr /bin/bash

安装一些库:

 ps. 把web注释掉

pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt

把官方的 test.ipynb 文件改为 .py 文件,使用argparse解析命令行输入的命令:

下面代码保存为 run.py 文件:

import os
import json
import time
from config import *
from application import trainTicket,idcard import argparseif __name__ == "__main__":parser = argparse.ArgumentParser()parser.add_argument('--img_path','-img_path', type=str, default='test.jpeg')args = parser.parse_args()if yoloTextFlag =='keras' or AngleModelFlag=='tf' or ocrFlag=='keras':os.environ["CUDA_VISIBLE_DEVICES"] = ''if yoloTextFlag=='opencv':scale,maxScale = IMGSIZEfrom text.opencv_dnn_detect import text_detectelif yoloTextFlag=='darknet':scale,maxScale = IMGSIZEfrom text.darknet_detect import text_detectelif yoloTextFlag=='keras':scale,maxScale = IMGSIZE[0],2048from text.keras_detect import  text_detectelse:print( "err,text engine in keras\opencv\darknet")from text.opencv_dnn_detect import angle_detectfrom crnn.keys import alphabetChinese,alphabetEnglishif ocrFlag=='keras':from crnn.network_keras import CRNNif chineseModel:alphabet = alphabetChineseif LSTMFLAG:ocrModel = ocrModelKerasLstmelse:ocrModel = ocrModelKerasDenseelse:ocrModel = ocrModelKerasEngalphabet = alphabetEnglishLSTMFLAG = Trueelif ocrFlag=='torch':from crnn.network_torch import CRNNif chineseModel:alphabet = alphabetChineseif LSTMFLAG:ocrModel = ocrModelTorchLstmelse:ocrModel = ocrModelTorchDenseelse:ocrModel = ocrModelTorchEngalphabet = alphabetEnglishLSTMFLAG = Trueelif ocrFlag=='opencv':from crnn.network_dnn import CRNNocrModel = ocrModelOpencvalphabet = alphabetChineseelse:print( "err,ocr engine in keras\opencv\darknet")nclass = len(alphabet)+1   if ocrFlag=='opencv':crnn = CRNN(alphabet=alphabet)else:crnn = CRNN( 32, 1, nclass, 256, leakyRelu=False,lstmFlag=LSTMFLAG,GPU=GPU,alphabet=alphabet)if os.path.exists(ocrModel):crnn.load_weights(ocrModel)else:print("download model or tranform model with tools!")ocr = crnn.predict_jobfrom main import TextOcrModelmodel =  TextOcrModel(ocr,text_detect,angle_detect)import cv2import timep = args.img_pathimg = cv2.imread(p)h,w = img.shape[:2]timeTake = time.time()scale=608maxScale=2048result,angle= model.model(img,detectAngle=True,##是否进行文字方向检测scale=scale,maxScale=maxScale,MAX_HORIZONTAL_GAP=80,##字符之间的最大间隔,用于文本行的合并MIN_V_OVERLAPS=0.6,MIN_SIZE_SIM=0.6,TEXT_PROPOSALS_MIN_SCORE=0.1,TEXT_PROPOSALS_NMS_THRESH=0.7,TEXT_LINE_NMS_THRESH = 0.9,##文本行之间测iou值LINE_MIN_SCORE=0.1,                                             leftAdjustAlph=0,##对检测的文本行进行向左延伸rightAdjustAlph=0.1,##对检测的文本行进行向右延伸)timeTake = time.time()-timeTakeprint('It take:{:.3f}s'.format(timeTake))for line in result:print(line['text'])

ps. 因为TensorFlow版本的问题,会出现2-3和错误,下面列出可能遇到的错误和解决办法:

报错1:tensorflow.python.framework.errors_impl.InvalidArgumentError: You must feed a value for placeholder tensor 'Placeholder_367' with dtype float and shape [2]
[[{{node Placeholder_367}}]]
-- 就是这类Placeholder_xxx的问题

解决1:https://github.com/chineseocr/chineseocr/issues/496:

报错2:AttributeError: module ‘keras.backend‘ has no attribute 'get_session'

解决2:AttributeError: module ‘keras.backend‘ has no attribute ‘get_session‘ 问题解决_叶庭云的博客-CSDN博客

报错3:ValueError: Subshape must have computed start >= end since stride is negative, but is 0 and 2 (computed from start 0 and end 9223372036854775807 over shape with rank 2 and stride-1)

解决3:Tensorflow v1到v2版本兼容指南 - 知乎

最后,成功:

打包成docker镜像
docker commit -m 'cpu inference' -a 'hongrun' cdfaa57d915d ocr:cpu

以上。


附注:有一个轻量化的 chineseocr 项目,叫做 chineseocr_lite,这个也可以打包成镜像,但好像封装的有点死,不容易改动(比如不想用web),所以就抛弃它。

chineseocr_lite 项目:

https://github.com/DayBreak-u/chineseocr_lite/tree/master

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/199123.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计必备网站,每天必看,无需翻墙。

设计师每天需要浏览各类设计互交网站,找素材、找灵感、看教程等等,下面就推荐几个非常好用的设计网站,我本人用了好几年,对广大设计师们一定有帮助,感觉收藏起来吧! 1、免费设计素材——菜鸟图库 https://…

Java Websocket实现即时通讯功能入门教程

近年来,即时通讯(Instant Messaging)已经成为了人们日常生活中不可缺少的一部分。而Java Websocket技术则提供了一种简便高效的方式来实现即时通讯功能。本文将介绍如何使用Java Websocket来实现即时通讯,并提供具体的代码示例。 …

Vue自定义hook函数

hook 本质是一个函数,可以把 setup 函数中使用的 Composition API 进行封装。 hook 类似于 Vue2 中的 mixin 混合。 自定义 hook 的优势:复用代码,让 setup 中的逻辑更加清晰易懂。 自定义hook函数: 1、在 src 目录下创建 hooks…

跨境电商与本土文化融合:推动全球商业合作

随着全球经济的日益一体化,跨境电商成为推动全球商业合作的重要力量。在这个数字化时代,跨境电商不仅在商品流通上起到了桥梁作用,更在文化交流方面发挥了积极的作用。本文将深入探讨跨境电商如何与本土文化融合,以及这种融合如何…

GItLab项目导入到HBuilderX中,下载TortoiseGit 安装

1.项目拉取 选择你要下载的项目,选master下完后内部在切换想要分支,一般选http下载,下图我选的是ssh下载 选择导入,git导入 复制上地址 如果提示这个点击确定 找到下图位置安装 2.TortoiseGit 下载安装 TortoiseGit 官网下载地址:Download – TortoiseGit – Wind…

做一个类似东郊到家的上门服务类系统有哪些功能?

上门服务系统是一款便捷的技师接单、上门提供理疗服务的软件。我们拥有优秀的开发团队,为您量身定制解决方案,价格合理,用心服务。 预约上门:该功能是预约上门推拿理疗按摩系统软件小程序APP的核心功能。消费者通过系统预约下单&a…

待办事项app推荐哪一款?每日待办事项提醒用什么APP

每天的生活中,我们总是充满着各种待办事项,如果不及时处理,就会导致各种问题的出现。在众多的待办事项app中,如何选择一款最适合自己的app呢?所谓待办事项,通常是指尚未着手的事项。在日常生活中&#xff0…

求臻医学胃癌关爱日:美味的高“盐”值杀手

胃癌的发病率具有广泛的地域差异,在东南亚国家尤为高发。韩国是胃癌发病率排名第一的国家,其次为日本,中国紧随其后,由于中国人口基数大,其绝对患胃癌人数为全球第一,每年有100多万新诊断患者,其…

大文本限制录入文字后通过输入法鼠标单击还可继续超限额录入问题

textInpEl.on(keyup propertychange, "textarea", function () { var realMaxLength $(this).parent().parent().find(".maxNum").text(); //真实的最大长度 var endFontLen $(this).val().length; if (endFontLen < rea…

基于springboot的滑雪场管理系统源码

&#x1f345; 简介&#xff1a;500精品计算机源码学习&#xff0c;有8个项目关注搏主即可领取。另送简历模板、答辩模板、学习资料、答辩常见问题【关注我&#xff0c;都给你】 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 文末获取源码 目录 一、以下学…

CentOS安装Docker

Docker 分为 CE 和 EE 两大版本。CE 即社区版&#xff08;免费&#xff0c;支持周期 7 个月&#xff09;&#xff0c;EE 即企业版&#xff0c;强调安全&#xff0c;付费使用&#xff0c;支持周期 24 个月。 Docker CE 分为 stable test 和 nightly 三个更新频道。 官方网站上…

[足式机器人]Part2 Dr. CAN学习笔记-数学基础Ch0-3线性化Linearization

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记-数学基础Ch0-3线性化Linearization 1. 线性系统 Linear System 与 叠加原理 Superposition2. 线性化&#xff1a;Taylor Series3. Summary 1. 线性系统 Linear System 与 叠加原理 Superposition…

智慧物联可视化大屏赋能设备管理和城市运行

在智慧物联的时代&#xff0c;万物互联的网络正在构筑起一个智能化的世界。无论是家居设备、汽车、还是工业设备&#xff0c;都能通过互联网实现智能化管理和控制。随着物联网技术的发展&#xff0c;我们迅速步入了一个千姿百态的智慧时代。智慧物联逐渐渗透进我们的日常生活&a…

Vmware虚拟机简介和安装

作者&#xff1a;余小小 常见的虚拟机 vmwarevirtualBox Vmware 运行在win系统上centos运行在Vm上 先安装vm&#xff0c;在安装centos系统 Vmware介绍 不用分区或者重开机&#xff0c;就可以在同一台pc上使用多种操作系统完全隔离&#xff0c;且保护不同的操作系统环境和文…

基于PIPNet的人脸106关键点检测

做美颜需要使用到人脸关键点&#xff0c;所以整理了一下最近的想法。 按模型结构分类&#xff1a; 1.Top-Down: 分为两个步骤&#xff0c;首先&#xff0c;对于原始输入图片做目标检测&#xff0c;比如做人脸检测&#xff0c;将人脸区域抠出&#xff0c;单独送进关键点检测模…

如何清理电脑缓存?简单几个步骤轻松搞定

清理电脑缓存的方法 下面我们为大家总结了一些可以用于清理电脑缓存的方法&#xff1a; 清理浏览器缓存 浏览器缓存是电脑为了我们能够更加快速的访问页面而临时保存的数据&#xff0c;随着时间的推移&#xff0c;浏览器缓存也会越来越多&#xff0c;这样不仅不会加快网页访…

广州华锐视点:VR仿真实训室中控系统成为VR课堂教学必备工具

随着科技的不断发展&#xff0c;虚拟现实&#xff08;VR&#xff09;技术已经逐渐走进我们的生活。从游戏娱乐到医疗教育&#xff0c;VR技术的应用范围日益广泛。近年来&#xff0c;VR技术在教育领域的应用也取得了显著的成果&#xff0c;为提高教育质量和培养创新人才提供了全…

24V-36v转3.3/5/9/12V芯片3A可调降压ic

一款高效、多功能的24V-36V转3.3/5/9/12V芯片3A可调降压IC 在当今电子设备日益普及的时代&#xff0c;电源管理显得尤为重要。为了满足各种设备的需求&#xff0c;一款高效、多功能的电源转换器成为工程师们的重要选择。本文将为您介绍一款24V-36V转3.3/5/9/12V芯片3A可调降压…

视频推拉流直播点播EasyDSS平台点播文件加密存储的实现方法

视频推拉流直播点播系统EasyDSS平台&#xff0c;可提供流畅的视频直播、点播、视频推拉流、转码、管理、分发、录像、检索、时移回看等功能&#xff0c;可兼容多操作系统&#xff0c;还能支持CDN转推&#xff0c;具备较强的可拓展性与灵活性&#xff0c;在直播点播领域具有广泛…

使用C语言创建高性能网络爬虫IP池

目录 一、引言 二、IP池的设计 1、需求分析 2、架构设计 3、关键技术 三、IP池的实现 1、存储实现 2、调度实现 3、通信实现 4、异常处理实现 四、代码示例 五、性能优化 六、测试与分析 七、结论 一、引言 随着互联网的快速发展&#xff0c;网络爬虫成为了获取…