当前位置: 首页 > news >正文

[PaddlePaddle飞桨] PaddleOCR-光学字符识别-小模型部署

PaddleOCR的GitHub项目地址
推荐环境:

PaddlePaddle >= 2.1.2
Python >= 3.7
CUDA >= 10.1 
CUDNN >= 7.6

pip下载指令:

python -m pip install paddlepaddle-gpu==2.5.1 -i https://pypi.tuna.tsinghua.edu.cn/simple  pip install paddleocr==2.7.3

小模型配置代码:

from paddleocr import PaddleOCR# Paddleocr目前支持的多语言语种可以通过修改lang参数进行切换
# 例如`ch`, `en`, `fr`, `german`, `korean`, `japan`
OCR = PaddleOCR(lang="ch",use_angle_cls=True,use_gpu=True
)  # need to run only once to download and load model into memory

图片文件保存代码:

import io
import cv2
import os
import uuid
import numpy as np
def save_image_file(file_path, file_name, file_content):# 生成一个唯一的文件名unique_filename = str(uuid.uuid4()) + os.path.splitext(file_name)[1]# 确保目录存在if not os.path.exists(file_path):os.makedirs(file_path)try:# 将文件流转换为ndarraynparr = np.frombuffer(file_content.read(), np.uint8)file_nd_array = cv2.imdecode(nparr, cv2.IMREAD_COLOR)# 构建完整的文件路径file_path_with_file_name = os.path.join(file_path, unique_filename)# 保存图像到文件cv2.imwrite(filename=file_path_with_file_name, img=file_nd_array)return file_path_with_file_nameexcept Exception as e:print(f"Error saving file: {e}")return None

获取OCR结果代码:

import os
# 获取指定文件的OCR结果(数组)
def get_text_with_ocr(file_path_with_file_name):if not os.path.exists(file_path_with_file_name):return Noneocr_result = OCR.ocr(file_path_with_file_name)# for idx in range(len(ocr_result)):#     res = ocr_result[idx]#     for line in res:#         print(line)return ocr_result

图像文字提取代码:

# OCR(图像文字提取)
def optical_character_recognition(file_content, file_name):file_path_without_file_name = '.' + STATIC_IMAGE_PATH + "/"if not os.path.exists(file_path_without_file_name):os.makedirs(file_path_without_file_name)file_path_with_file_name = save_image_file(file_path_without_file_name, file_name, file_content)ocr_result = get_text_with_ocr(file_path_with_file_name)# 提取文本信息text_only = '\n'.join([item[1][0] for sublist in ocr_result for item in sublist])return text_only

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【人工智能】Transformers之Pipeline(概述):30w+大模型极简应用
  • C语言阶乘(只用逻辑运算中的短路效应判断)
  • WEB前端03-CSS3基础
  • 兼容问题---ios底部的安全距离css设置
  • C++进阶(while循环——函数应用)
  • 通过vm可以访问那些属性——06
  • 整洁架构SOLID-接口隔离原则(ISP)
  • WSGI 服务器教程:`full_dispatch_request` 方法解析
  • Flutter框架时间线梳理
  • 同三维T80004EA编解码器视频使用操作说明书:高清HDMI编解码器,高清SDI编解码器,4K超清HDMI编解码器,双路4K超高清编解码器
  • SpringBoot整合Java Mail实现发送邮件
  • Study--Oracle-07-ASM自动存储管理(一)
  • GLM3源码学习
  • 《斯科特·凯尔比的风光摄影手册》读书笔记
  • 刷题之单词规律同构字符串(leetcode)
  • 0x05 Python数据分析,Anaconda八斩刀
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • es6
  • Java|序列化异常StreamCorruptedException的解决方法
  • Python学习之路13-记分
  • Vue2 SSR 的优化之旅
  • Zsh 开发指南(第十四篇 文件读写)
  • 从tcpdump抓包看TCP/IP协议
  • 巧用 TypeScript (一)
  • 数据仓库的几种建模方法
  • Nginx实现动静分离
  • shell使用lftp连接ftp和sftp,并可以指定私钥
  • ‌移动管家手机智能控制汽车系统
  • #if #elif #endif
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (Java)【深基9.例1】选举学生会
  • (Note)C++中的继承方式
  • (附源码)springboot教学评价 毕业设计 641310
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (附源码)计算机毕业设计大学生兼职系统
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • ***原理与防范
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • .NET编程——利用C#调用海康机器人工业相机SDK实现回调取图与软触发取图【含免费源码】
  • .net分布式压力测试工具(Beetle.DT)
  • .NET框架类在ASP.NET中的使用(2) ——QA
  • .NET中GET与SET的用法
  • :O)修改linux硬件时间
  • @Pointcut 使用
  • [ solr入门 ] - 利用solrJ进行检索
  • [1525]字符统计2 (哈希)SDUT
  • [2018][note]用于超快偏振开关和动态光束分裂的all-optical有源THz超表——