首页
工具
心境语句
相册
建站轨迹
关于
Search
1
微信小程序:计算属性的两种体现方式及应用场景
1,594 阅读
2
Antd Upload 组件上传文件接收数据流并下载
1,059 阅读
3
C#插件火车头采集器动态切换代理IP,及自动切换UserAgent
542 阅读
4
[C#]使用dnSpy对目标程序(EXE或DLL)进行反编译修改并编译运行
537 阅读
5
ADODB.Connection 错误 800a0e7a 未找到提供程序。该程序可能未正确安装解决方法
499 阅读
react
typecho
ASP
Centos
MYSQL
PHP
Sql server
Javascript
nodejs
数据采集
.NET
git
编程算法
管理及流程
Vue
微信小程序
android
python
mongodb
登录
Search
标签搜索
kotlin
node-sass
nuxtjs
C#火车头插件
火车头采集器
火车头代理
C#反编译
程序逆向
dnSpy教程
Antd
InputNumber
NPM教程
NPM命令
rrweb教程
git慢
git镜像
vim命令
git命令
网页音乐插件
网页播放器
Elysian
累计撰写
74
篇文章
累计收到
0
条评论
首页
栏目
react
typecho
ASP
Centos
MYSQL
PHP
Sql server
Javascript
nodejs
数据采集
.NET
git
编程算法
管理及流程
Vue
微信小程序
android
python
mongodb
页面
工具
心境语句
相册
建站轨迹
关于
搜索到
12
篇与
Centos
的结果
2024-09-10
PaddleOCR Linux-Centos7.6安装与部署
1. 运行环境准备本人环境为阿里云服务器centos 7.6(全新镜像系统)从0开始部署PaddleOCR1.1 参考资料PaddleOCR 运行环境准备 PaddleOCR 快速开始 手把手0基础Centos下安装与部署paddleOcr 教程 PaddleOCR基于PaddleHub Serving的服务部署(docker环境) 新手Docker安装PaddleOCR快速指导(非长期有效具体看更新时间) (ziyoukaifa.com) PaddleOCR Linux-Centos7.6安装与部署1.2 PaddleOCR的环境推荐环境:PaddlePaddle >= 2.1.2 Python 3.7 CUDA10.1 / CUDA10.2 CUDNN 7.62. centos下准备好docker工具可以自己选择一个稳定的版本安装,或者不指定版本,直接安装最新版本2.1 备份之前的yum源文件cd /etc/yum.repos.d/ mv CentOS-Base.repo CentOS-Base.repo_bak2.2 更换yum源为阿里云wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo2.3 清除缓存并生成新的缓存yum.repos.d]# yum clean all yum makecache2.4测试发现还是报错yum list docker-ce --showduplicates | sort -r Error: No matching Packages to list \* updates: mirrors.bfsu.edu.cn Loading mirror speeds from cached hostfile Loaded plugins: fastestmirror, langpacks \* extras: mirrors.bfsu.edu.cn \* base: mirrors.bfsu.edu.cn2.5 添加仓库yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo2.6 IF ERROR: yum-config-manager: command not foundyum -y install yum-utils yum clean all yum makecache2.7 再次测试,发现OKyum list docker-ce --showduplicates | sort -r //显示如下 docker-ce.x86\_64 3:20.10.0-3.el7 docker-ce-stable2.8 yum install docker-ce接下来就是yum来安装docker完成yum install docker-ce2.9 启动docker服务service docker start2.10 查看docker版本,检查docker是否安装成功docker --version #显示如下 Docker version 24.0.2, build cb74dfc2.11 配置docker服务开机自启动systemctl enable docker3.Docker环境配置切换到工作目录下mkdir /home/Projects cd /home/Projects首次运行需创建一个docker容器,再次运行时不需要运行当前命令创建一个名字为ppocr的docker容器,并将当前目录映射到容器的/paddle目录下3.1镜像下载接下来docker就会自动开始下载镜像了,然后就是漫长的下载等待,大概下载时间会有10分钟左右在CPU环境下使用docker,使用docker而不是nvidia-docker创建dockersudo docker run --name ppocr -v \$PWD:/paddle --shm-size=64G --network=host -it registry.baidubce.com/paddlepaddle/paddle:2.1.3-gpu-cuda10.2-cudnn7 /bin/bash下载完毕后,会自动进入到镜像内部的shell里,进入下面这样的界面中。我们先直接输入exit退出 exit3.2查看docker中的运行进程docker ps3.3启动ppocr这个容器docker start ppocr3.4进入ppocr容器sudo docker container exec -it ppocr /bin/bash3.5 检查docker内的python3以及pip3版本python>=3.7.04.安装最新PaddlePaddle(2.4.2)python3 -m pip install paddlepaddle==2.4.2 -i https://mirror.baidu.com/pypi/simple4.1 安装PaddleOCR whl包pip install "paddleocr>=2.0.1" # 推荐使用2.0.1+版本这个包一般下载得会比较久4.2 包版本依赖不兼容报错问题Paddlepaddle 2.4.2需要protobuf<=3.20.0,>=3.1.0,但你有protobuf 4.23.2,这是不兼容的。4.2.1 重新换一个 protobuf 版本/home pip uninstall protobuf /home pip install protobuf==3.20.0OK没有其它包不兼容了,如果还存在包兼容问题根据错误提示升级或降级对应包即可4.3 clone PaddleOCR仓库代码cd /home git clone https://github.com/PaddlePaddle/PaddleOC #【推荐】 #如果无法访问github 的小伙伴们也可以通过gitee仓库里面将源码下载下来: git clone https://gitee.com/paddlepaddle/PaddleOCR5. 安装paddlehub(2.2.0)cd /home/PaddleOCR安装paddlehubpip3 install paddlehub==2.2.0 --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple5.0.1 jupyter-console 包依赖冲突错误:pip的依赖解析器目前没有考虑所有已安装的包。这种行为是下列依赖冲突的根源。Jupyter-console 6.4.0需要prompt-toolkit!=3.0.0,!=3.0.1,❤️.1.0,>=2.0.0,但您有不兼容的prompt-toolkit 1.0.185.0.2 更换 Jupyter-console 版本卸载Jupyter-consolepip3 uninstall jupyter-console pip3 install jupyter-console==4.0.25.1 安装requirements.txt 依赖pip install -r requirements.txt -i https://pypi.douban.com/simple #如果提示albumentations包版本不存在则将requirements.txt中的albumentations包版本替换成 #albumentations==1.3.16. 下载轻量的推理模型安装服务模块前,需要准备推理模型并放到正确路径。我们将使用的是最新PP-OCRv3模型,默认模型路径为:**检测模型:./inference/ch_PP-OCRv3_det_infer/识别模型:./inference/ch_PP-OCRv3_rec_infer/方向分类器:./inference/ch_ppocr_mobile_v2.0_cls_infer/进入/home/PaddleOCR/deploy/hubserving/ocr_system下cd /home/PaddleOCR/deploy/hubserving/ocr_system # 下载并解压检测模型 wget https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_det_infer.tar && tar -xf ch_PP-OCRv3_det_infer.tar && rm -rf ch_PP-OCRv3_det_infer.tar # 下载并解压识别模型 wget https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_rec_infer.tar && tar -xf ch_PP-OCRv3_rec_infer.tar && rm -rf ch_PP-OCRv3_rec_infer.tar # 下载并解压方向分类器 wget https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_infer.tar && tar -xf ch_ppocr_mobile_v2.0_cls_infer.tar && rm -rf ch_ppocr_mobile_v2.0_cls_infer.tar全部下载解压完后输ls查看目录确认6.1 修改模型路径修改三个dir,注意要绝对路径,以及rec_imgage_shape最新PP-OCR3为3.48.3206.2 单张图片识别测试回到 cd /home/paddleOCR 目录下图片测试用官方自带的图片来测试识别,官方自带图片目录为 /home/PaddleOCR/doc/imgspython3 tools/infer/predict_system.py --image_dir="./doc/imgs/11.jpg" --det_model_dir="/home/PaddleOCR/deploy/hubserving/ocr_system/ch_PP-OCRv3_det_infer/" --rec_model_dir="/home/PaddleOCR/deploy/hubserving/ocr_system//ch_PP-OCRv3_rec_infer/" --cls_model_dir="/home/PaddleOCR/deploy/hubserving/ocr_system/ch_ppocr_mobile_v2.0_cls_infer/" --use_angle_cls true --use_gpu false7. PaddleHub Server 服务部署这种部署形式也是官方推荐的部署方式之一。7.1 安装服务模块PaddleOCR提供3种服务模块,根据需要安装所需模块安装检测+识别串联服务模块即可 cd /home/PaddleOCR 安装检测服务模块: hub install deploy/hubserving/ocr_det/ 或,安装分类服务模块: hub install deploy/hubserving/ocr_cls/ 或,安装识别服务模块: hub install deploy/hubserving/ocr_rec/ 或,安装检测+识别串联服务模块: hub install deploy/hubserving/ocr_system/7.2 自定义修改服务模块(后续,现可跳过)如果需要修改服务逻辑,你一般需要操作以下步骤(以修改ocr_system为例):7.2.1 停止服务hub serving stop --port/-p XXXX7.2.2 修改参数到相应的module.py和params.py等文件中根据实际需求修改代码。例如,如果需要替换部署服务所用模型,则需要到 params.py 中修改模型路径参数det_model_dir和rec_model_dir,如果需要关闭文本方向分类器,则将参数use_angle_cls置为False,当然,同时可能还需要修改其他相关参数,请根据实际情况修改调试。 强烈建议修改后先直接运行module.py调试,能正确运行预测后再启动服务测试。7.2.3 卸载旧服务包hub uninstall ocr_system7.2.4 安装修改后的新服务包hub install deploy/hubserving/ocr_system/7.2.5 重新启动服务hub serving start -m ocr_system7.3 hub 配置文件init_args中的可配参数与module.py中的_initialize函数接口一致。其中,当use_gpu为true时,表示使用GPU启动服务。predict_args中的可配参数与module.py中的predict函数接口一致。注意:使用配置文件启动服务时,其他参数会被忽略。如果使用GPU预测(即,use_gpu置为true),则需要在启动服务之前,设置CUDA_VISIBLE_DEVICES环境变量,如:export CUDA_VISIBLE_DEVICES=0,否则不用设置。use_gpu不可与use_multiprocess同时为true7.4 启动 hub 服务命令hub serving start -c config.json成功会出现以下说明,后续测试记得将8868端口放开8. 部署 web 服务程序8.1 安装flask,flask-cors下面使用flask 部署web框架cd /home/PaddleOCR/tools pip3 install flask安装flask-corspip3 install flask-cors8.2 新建web服务程序在 /home/PaddleOCR/tools 目录下新建一个新的py文件,文件名为testmyocr.py 并且给权限为 775testmyocr.py的内容如下:# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import os import sys __dir__ = os.path.dirname(os.path.abspath(__file__)) sys.path.append(__dir__) sys.path.append(os.path.abspath(os.path.join(__dir__, '..'))) from ppocr.utils.logging import get_logger logger = get_logger() import cv2 import numpy as np import time from PIL import Image from ppocr.utils.utility import get_image_file_list from tools.infer.utility import draw_ocr, draw_boxes import requests import json import base64 from flask import Flask,request from flask_cors import CORS import requests app = Flask(__name__) CORS(app) # 解决跨域问题 def cv2_to_base64(image): return base64.b64encode(image).decode('utf8') def draw_server_result(image_file, res): img = cv2.imread(image_file) image = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)) if len(res) == 0: return np.array(image) keys = res[0].keys() if 'text_region' not in keys: # for ocr_rec, draw function is invalid logger.info("draw function is invalid for ocr_rec!") return None elif 'text' not in keys: # for ocr_det logger.info("draw text boxes only!") boxes = [] for dno in range(len(res)): boxes.append(res[dno]['text_region']) boxes = np.array(boxes) draw_img = draw_boxes(image, boxes) return draw_img else: # for ocr_system logger.info("draw boxes and texts!") boxes = [] texts = [] scores = [] for dno in range(len(res)): boxes.append(res[dno]['text_region']) texts.append(res[dno]['text']) scores.append(res[dno]['confidence']) boxes = np.array(boxes) scores = np.array(scores) draw_img = draw_ocr( image, boxes, texts, scores, draw_txt=True, drop_score=0.5) return draw_img @app.route("/test") def test(): return 'Hello World!' @app.route("/myocr", methods=["POST"] ) def myocr(): # 输入参数 image_file = request.files['file'] basepath = os.path.dirname(__file__) logger.info("{} basepath".format(basepath)) savepath = os.path.join(basepath, image_file.filename) image_file.save(savepath) img = open(savepath, 'rb').read() if img is None: logger.info("error in loading image:{}".format(image_file)) # 转为 base64 data = {'images': [cv2_to_base64(img)]} # 发送请求 url = "http://127.0.0.1:8868/predict/ocr_system" headers = {"Content-type": "application/json"} r = requests.post(url=url, headers=headers, data=json.dumps(data)) # 返回结果 res = r.json()["results"][0] logger.info(res) return json.dumps(res) if __name__ == '__main__': app.run(host='0.0.0.0', port=5000) 8.3 启动web服务cd /home/PaddleOCR/tools 目录切换到tools下 python3 testmyocr.py & 启动web服务,启动成功会出现如下说明9. Postman工具调用测试**使用postman向 5000端口去发起请求,可以看到服务正常返回识别的结果
2024年09月10日
44 阅读
0 评论
0 点赞
2022-11-24
centos7 防火墙常用命令
CentOS7 以上机器一些命令和低版本CentOS是有些差异的,本文只针对CentOS7 以上版本。CentOS7使用firewalld打开关闭防火墙与端口1、firewalld的基本使用启动: systemctl start firewalld关闭: systemctl stop firewalld查看状态: systemctl status firewalld开机禁用 : systemctl disable firewalld开机启用 : systemctl enable firewalld2.systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。启动一个服务:systemctl start firewalld.service关闭一个服务:systemctl stop firewalld.service重启一个服务:systemctl restart firewalld.service显示一个服务的状态:systemctl status firewalld.service在开机时启用一个服务:systemctl enable firewalld.service在开机时禁用一个服务:systemctl disable firewalld.service查看服务是否开机启动:systemctl is-enabled firewalld.service查看已启动的服务列表:systemctl list-unit-files|grep enabled查看启动失败的服务列表:systemctl --failed3.配置firewalld-cmd查看版本: firewall-cmd --version查看帮助: firewall-cmd --help显示状态: firewall-cmd --state查看所有打开的端口: firewall-cmd --zone=public --list-ports更新防火墙规则: firewall-cmd --reload查看区域信息: firewall-cmd --get-active-zones查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0拒绝所有包:firewall-cmd --panic-on取消拒绝状态: firewall-cmd --panic-off查看是否拒绝: firewall-cmd --query-panic如何开启一个端口添加firewall-cmd --zone=public --add-port=80/tcp --permanent (–permanent永久生效,没有此参数重启后失效)重新载入firewall-cmd --reload查看firewall-cmd --zone= public --query-port=80/tcp删除firewall-cmd --zone= public --remove-port=80/tcp --permanent原文链接:https://blog.csdn.net/sinat_26476047/article/details/116192448
2022年11月24日
40 阅读
0 评论
0 点赞
2022-07-28
centos7.3安装宝塔面板、配置nginx、HTTPS,以及一些安全配置
安装宝塔面板打开宝塔官网,链接:宝塔面板 - 简单好用的Linux/Windows服务器运维管理面板点击立即安装,选择左侧linux的安全脚本,如下图:选择下面的centos安装脚本如下图:yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec然后等待安装完成,期间可能会展厅需要选择y/n,直接选择y就可以了,最终安装完成的样子如下图:这时候访问服务器上面的外网地址就可以访问到宝塔的登录界面了,上图中的username和password就是初始的登录账号和密码,这个东西必须要记住。(如果打不开,请检查一下服务器上防火墙或者是服务器运营商对应的安全规则是否放开了8888端口),至此宝塔面板就安装完成了,下面我们将做一些配置,保证我们的宝塔面板安全及相应网站的环境正常。宝塔面板安全配置通过上面提供的账号密码登录到宝塔面板,初次登录的时候,会需要绑定宝塔的账号,没有的话就注册一个。登录完宝塔账号后,就可以看到首页界面了,然后选择左边菜单的《面板设置》,开始配置面板安全相关的内容。修改面板账号,修改成你自己的账号密码,这样方便记忆,如下图配置《安全设置项》,如下图至此,宝塔面板的初步安全设置已设置完成,要攻击进来已经很不容易了。宝塔面板配置nginx、mysql、php等环境宝塔面板非常强大,对于这类内容都有很好的支持,只需要在软件商店中安装对应的包插件就可以实现环境的搭建,以下是我针对PHP,mysql的环境搭建,如下图:至此与宝塔相关的基本配置就讲完了,如有问题或不足之处,请联系交流,感谢
2022年07月28日
362 阅读
0 评论
0 点赞
2021-12-20
自动创建sftp站点账号shell
#!/bin/bash #站点目录,用户名根据站点目录生成,多个站点用空格隔开 #例web="test1 test2",生成的用户为sftp_test1 sftp_test2 web="chinaoa sgj" user_dir="/home/public_html/" ssh_dir="/etc/ssh/sshd_config" #配置权限,属主必须为root,权限必须为755,facl也不行 chown root.root ${user_dir} chmod 755 ${user_dir} #设置sebool值 if [[ `getenforce` == "Enforcing" ]];then setsebool ssh_chroot_full_access 1 fi #配置ssh,开启internal-sftp if [[ `grep -w internal-sftp ${ssh_dir} | wc -l` -eq 0 ]];then sed -i "s/Subsystem/#Subsystem/g" ${ssh_dir} echo "Subsystem sftp internal-sftp" >>${ssh_dir} fi for user in ${web};do if [[ `grep -w "Match user sftp_${user}" ${ssh_dir} | wc -l` -eq 0 ]];then #!/bin/bash #站点目录,用户名根据站点目录生成,多个站点用空格隔开 #例web="test1 test2",生成的用户为sftp_test1 sftp_test2 web="chinaoa sgj" user_dir="/home/public_html/" ssh_dir="/etc/ssh/sshd_config" #配置权限,属主必须为root,权限必须为755,facl也不行 chown root.root ${user_dir} chmod 755 ${user_dir} #设置sebool值 if [[ `getenforce` == "Enforcing" ]];then setsebool ssh_chroot_full_access 1 fi #配置ssh,开启internal-sftp if [[ `grep -w internal-sftp ${ssh_dir} | wc -l` -eq 0 ]];then sed -i "s/Subsystem/#Subsystem/g" ${ssh_dir} echo "Subsystem sftp internal-sftp" >>${ssh_dir} fi for user in ${web};do if [[ `grep -w "Match user sftp_${user}" ${ssh_dir} | wc -l` -eq 0 ]];then Match user sftp_${user} ChrootDirectory ${user_dir} X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp ### END ### EOF fi #添加用户 if [[ `grep -w "sftp_${user}" /etc/passwd | wc -l` -eq 0 ]];then useradd -M -s /bin/false sftp_${user} read -s -t 30 -p "请在30S内输入站点${i}用户密码: " password echo "${password}" |passwd --stdin sftp_${user} echo "用户生成完毕,用户名为: sftp_${user}" else echo "用户sftp_${user}已存在,请检查" fi #赋权对应目录给用户 setfacl -R -d -m u:sftp_${user}:rwx ${user_dir}${user} setfacl -R -m u:sftp_${user}:rwx ${user_dir}${user} #去掉不该有的目录权限,增加安全 cd ${user_dir} setfacl -R -d -m u:sftp_${user}:--- `ls ${user_dir} | grep -v "${user}"` setfacl -R -m u:sftp_${user}:--- `ls ${user_dir} | grep -v "${user}"` done #重启ssh服务 service sshd restart #人性化输出 echo "请使用sftp进行连接,端口号:`netstat -anltp | grep LISTEN | grep sshd | grep "0.0.0.0" | awk '{print $4}' | awk -F: '{print $2}'`"
2021年12月20日
56 阅读
0 评论
0 点赞
2021-12-20
CentOS文件权限查看和修改
文件权限查看查看目录的文件,输入命令:ls查看 token.txt 文件的权限,输入命令:ls -l token.txt那么就会出现相类似的信息-rw-r--r-- 1 root root 48 Jan 8 20:14 token.txt最开始的10位数 -rw-rw-r-- 最前面那个 - 代表的是类型第一个 rw- 代表的是所有者(user)第二个 rw- 代表的是组群(group)第三个 r-- 代表的是其他人(other) 其中: r 表示文件可以被读(read) w 表示文件可以被写(write) x 表示文件可以被执行(如果它是程序的话) - 表示相应的权限还没有被授予通过上面的解释,就可以看出 token.txt 文件的权限是:当前用户本身:可读可写,没有可执行权限当前用户组群:可读不可写,没有可执行权限其他用户:可读不可写,没有可执行权限rwx 也可以用数字来代替r ------------4 w ------------2 x ------------1 - ------------0所以我们总结出权限对应的数字-rw------- (600) 只有所有者才有读和写的权限 -rw-r--r-- (644) 只有所有者才有读和写的权限,组群和其他人只有读的权限 -rwx------ (700) 只有所有者才有读,写,执行的权限 -rwxr-xr-x (755) 只有所有者才有读,写,执行的权限,组群和其他人只有读和执行的权限 -rwx--x--x (711) 只有所有者才有读,写,执行的权限,组群和其他人只有执行的权限 -rw-rw-rw- (666) 每个人都有读写的权限 -rwxrwxrwx (777) 每个人都有读写和执行的权限修改文件权限现在我们把 token.txt 文件修改为 所有用户可读可写可执行 , 也就是对应编号为 777chmod 777 token.txt效果如下:转至:http://blog.csdn.net/zhaoyanjun6/article/details/79067442
2021年12月20日
64 阅读
0 评论
0 点赞
1
2
3