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

文字识别软件cnocr学习笔记

• 安装

pip install cnocr

• 基础的使用方法

   首次运行会下载安装模型,如果没有梯子,会报错:

在网络上查找cnocr的模型资源,并下载到本地。https://download.csdn.net/download/qq_33464428/89514689?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522751fb72b959dcac98e2fb460683254ea%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fcommercial.%2522%257D&request_id=751fb72b959dcac98e2fb460683254ea&biz_id=1&utm_medium=distribute.pc_search_result.none-task-download-2~all~insert_commercial~default-3-89514689-null-null.142^v101^pc_search_result_base5&utm_term=cnocr%20%E6%A8%A1%E5%9E%8B&spm=1018.2226.3001.4187.4

我放到了网盘:

链接: https://pan.baidu.com/s/1HQhyWNhWMjp09m-XTM97hQ

提取码: 6ddy 

模型的默认目录:

        Windows系统:C:\Users\当前用户\AppData\Roaming\cnstd\版本号\ppocr

        Linux系统:~/.cnocr/版本号/

        把下载得到的模型解压,每个模型按文件夹保存在上述目录即可。

ocr() 标准的多行文字检测识别

参数:
        img_fp:图像文件的路径,也可以是图像的二进制数据(如使用 open().read() 读取的内容),或者是一个 numpy.ndarray 类型的图像数据(例如使用 cv2.imread() 读取的图像)。
返回值:返回一个包含识别结果的列表,列表中的每个元素是一个字典,字典包含两个键:
        text:识别出的文本内容。
        score:识别结果的置信度得分,取值范围是 0 到 1,得分越高表示识别结果越可靠。
        position:(np.ndarray or None),检测出的文字对应的矩形框;np.ndarray, shape: (4, 2),对应 box 4个点的坐标值 (x, y) ;

示例代码:

from cnocr import CnOcrocr = CnOcr()
img_path = 'test.jpg'
res = ocr.ocr(img_path)
for line in res:print(f"文本: {line['text']}, 置信度: {line['score']}")
 图像分辨率对速度的影响

使用不同的分辨率对ocr的生成时间做了如下测试:

分辨率       生成时间

3k*4k            28s
1.6k*1k         0.71s
900*500        0.29s
768*768        0.12s
800*300        0.33s
800150         0.7s

        看得出,当图像很大时,由于数据量巨大,所以生成时间很长,但是图像很小时,时间也变长。这是由于模型内部的输入图形的标准像素是768*768,所以使用768*768速度最快。

ocr_for_single_line()   识别单行文本

        该方法适用于识别单行文本的图像,当图像中只有一行文本时,使用此方法可以获得更快的识别结果。
参数:

img_fp:与 ocr() 方法的 img_fp 参数含义相同。

返回值:

        返回一个元组,包含两个元素:

        第一个元素是识别出的文本内容。

        第二个元素是识别结果的置信度得分。

示例代码:

from cnocr import CnOcrocr = CnOcr()
img_path = 'single_line_test.jpg'
text, score = ocr.ocr_for_single_line(img_path)
print(f"文本: {text}, 置信度: {score}")

其他说明:

        模型选择:在初始化 CnOcr 类时,可以通过 model_name 参数选择不同的识别模型,以适应不同的识别需求。例如:
        ocr = CnOcr(model_name='densenet_lite_136-fc')

速度:

对于800*150像素这样像素的图形,生成时间是0.01s级。

使用GPU:

要使用GPU,在创建ocr对象时使用以下参数: 

ocr = CnOcr(model_backend='pytorch', context='cuda')
或
ocr = CnOcr(model_backend='pytorch', context='gpu')

第一次使用GPU会出现报错:

解决办法:卸载并重新安装onnxruntime

pip uninstall onnxruntime
pip install onnxruntime-gpu

经测试,使用RTX2080Ti,处理一个3024*4032像素的图像,时间为5秒,使用cpu为8秒,而处理一个768*768的图像,速度几乎没有区别。

 自定义字符集

       在初始化 CnOcr 对象时指定 vocab 参数。这样,模型只会识别 vocab 中包含的字符。

from cnocr import CnOcr# 自定义字符集,只识别数字和字母
vocab = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
ocr = CnOcr(vocab=vocab)
img_path = 'custom_charset_image.jpg'
res = ocr.ocr(img_path)
for line in res:print(f"文本: {line['text']}, 置信度: {line['score']}")

 使用不同的模型

        Cnocr 提供了多种预训练模型,在初始化 CnOcr 对象时通过 model_name 参数选择不同的模型,以适应不同的识别需求。

from cnocr import CnOcr# 使用 densenet_lite_136-fc 模型
ocr = CnOcr(model_name='densenet_lite_136-fc')
img_path = 'image.jpg'
res = ocr.ocr(img_path)
for line in res:print(f"文本: {line['text']}, 置信度: {line['score']}")

 批量识别

如果有多个图像需要进行识别,可以编写一个循环来实现批量识别。

from cnocr import CnOcr
import osocr = CnOcr()
image_dir = 'image_directory'  # 包含多个图像的目录for filename in os.listdir(image_dir):if filename.endswith(('.png', '.jpg', '.jpeg')):img_path = os.path.join(image_dir, filename)res = ocr.ocr(img_path)print(f"图像: {filename}")for line in res:print(f"文本: {line['text']}, 置信度: {line['score']}")print()

 ocr_for_single_lines()    识别多个单行文本

        与 ocr_for_single_line() 类似,不过它接受的输入是一个由多个单行文本图像数据的列表。

相关文章:

文字识别软件cnocr学习笔记

• 安装 pip install cnocr • 基础的使用方法 首次运行会下载安装模型,如果没有梯子,会报错: 在网络上查找cnocr的模型资源,并下载到本地。https://download.csdn.net/download/qq_33464428/89514689?ops_request_misc%257B%2…...

本地部署DeepSeek R1 + 界面可视化open-webui【ollama容器+open-webui容器】

本地部署DeepSeek R1 界面可视化open-webui 本文主要讲述如何用ollama镜像和open-webui镜像部署DeepSeek R1, 镜像比较方便我们在各个机器之间快速部署。 显卡推荐 模型版本CPU内存GPU显卡推荐1.5B4核8GB非必需4GBRTX1650、RTX20607B、8B8核16GB8GBRTX3070、RTX…...

macOS部署DeepSeek-r1

好奇,跟着网友们的操作试了一下 网上方案很多,主要参考的是这篇 DeepSeek 接入 PyCharm,轻松助力编程_pycharm deepseek-CSDN博客 方案是:PyCharm CodeGPT插件 DeepSeek-r1:1.5b 假设已经安装好了PyCharm PyCharm: the Pyth…...

基于STM32与BD623x的电机控制实战——从零搭建无人机/机器人驱动系统

系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 11.职业规划 文章目录 一、为什么选择这两个芯片?1.1 STM32微控制器1.2 ROHM BD623x电机驱动 二、核心控制原理详解2.1 H桥驱动奥…...

基于ffmpeg+openGL ES实现的视频编辑工具-字幕添加(六)

在视频编辑领域,字幕的添加是一项极为重要的功能,它能够极大地丰富视频内容,提升观众的观看体验。当我们深入探究如何实现这一功能时,FreeType 开源库成为了强大助力。本文将详细阐述借助 FreeType 库生成字幕数据的过程,以及如何实现字幕的缩放、移动、旋转、颜色修改、对…...

C++中const T为什么少见?它有什么用途?

在C中,右值引用(T&&)是移动语义和完美转发的核心特性之一,但你是否注意到,const T&&(const右值引用)却很少被使用?它到底有什么用途? 今天我们就来深入…...

Leetcode 位计算

3095. 或值至少 K 的最短子数组 I 3097. Shortest Subarray With OR at Least K II class Solution:def minimumSubarrayLength(self, nums: List[int], k: int) -> int:n len(nums)bits [0] * 30res infdef calc(bits):return sum(1 << i for i in range(30) if…...

SpringBoot3.x整合WebSocket

SpringBoot3.x整合WebSocket 本文主要介绍最新springboot3.x下如何整合WebSocket. WebSocket简述 WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议&#xff0c;它允许在浏览器和服务器之间进行实时的、双向的通信。相对于传统的基于请求和响应的 HTTP 协议&#xff…...

猿大师办公助手对比其他WebOffice在线编辑Office插件有什么优势

1. 原生Office功能完整嵌入&#xff0c;排版一致性保障 猿大师办公助手直接调用本地安装的微软Office、金山WPS或永中Office&#xff0c;支持所有原生功能&#xff08;如复杂公式、VBA宏等&#xff09;&#xff0c;确保网页编辑与本地打开的文档排版完全一致。 提供OLE嵌入和完…...

STM32创建静态库lib

创建静态库lib 1. 新建工程1.1 创建工程文件夹1.2 编写用户相关代码1.2.1 stm32f4xx_it.h1.2.2 stm32f4xx_it.c1.2.3 标准库配置&#xff1a;stm32f4xx_conf.h1.2.4 HAL库的配置&#xff1a;stm32f4xx_hal_conf.h1.2.5 LL库配置&#xff1a;stm32f4xx_ll_conf.h 1.3 移植通用文…...

Hive JOIN过滤条件位置玄学:ON vs WHERE的量子纠缠

Hive JOIN过滤条件位置玄学:ON vs WHERE的量子纠缠 作为数据工程师,Hive JOIN就像吃火锅选蘸料——放错位置味道全变!今天带你破解字节/阿里等大厂高频面试题:ON和WHERE后的过滤条件究竟有什么不同? 一、核心差异对比表 特性ON子句WHERE子句执行时机JOIN操作时JOIN完成后…...

MAC快速本地部署Deepseek (win也可以)

MAC快速本地部署Deepseek (win也可以) 下载安装ollama 地址: https://ollama.com/ Ollama 是一个开源的大型语言模型&#xff08;LLM&#xff09;本地运行框架&#xff0c;旨在简化大模型的部署和管理流程&#xff0c;使开发者、研究人员及爱好者能够高效地在本地环境中实验和…...

javaEE-13.spring MVC

目录 什么是spring web mvc: 什么是MVC: 一.创建一个spring项目 二.实现功能: 创建helloController.java项目: 建立连接&#xff1a; RequestMapping注解: 1.RequestMapping注解的使用&#xff1a; 2. RequestMapping 是GET还是POST请求 3.指定请求方法 RestControll…...

C/C++ | 每日一练 (2)

&#x1f4a2;欢迎来到张胤尘的技术站 &#x1f4a5;技术如江河&#xff0c;汇聚众志成。代码似星辰&#xff0c;照亮行征程。开源精神长&#xff0c;传承永不忘。携手共前行&#xff0c;未来更辉煌&#x1f4a5; 文章目录 C/C | 每日一练 (2)题目参考答案封装继承多态虚函数底…...

Nginx 常用命令和部署详解及案例示范

一、Nginx常用命令 1.1 启动 Nginx 要启动 Nginx 服务&#xff0c;可以使用以下命令&#xff1a; sudo systemctl start nginx1.2 停止 Nginx 如果需要停止 Nginx 服务&#xff0c;可以使用以下命令&#xff1a; sudo systemctl stop nginx1.3 重启 Nginx 在修改了 Nginx…...

GO大模型应用开发框架-

Eino 旨在提供基于 Golang 语言的终极大模型应用开发框架。 它从开源社区中的诸多优秀 LLM 应用开发框架&#xff0c;如 LangChain 和 LlamaIndex 等获取灵感&#xff0c;同时借鉴前沿研究成果与实际应用&#xff0c;提供了一个强调简洁性、可扩展性、可靠性与有效性&#xff0…...

保姆级!springboot访问Ollama API并调用DeepSeek模型 Api

要在springboot中访问Ollama API并调用DeepSeek模型,你需要遵循以下步骤。首先,确保你有一个有效的Ollama服务器实例运行中,并且DeepSeek模型已经被加载。 可以参考我的这篇博客 保姆级!使用Ollama本地部署DeepSeek-R1大模型 并java通过api 调用 使用Spring Boot + Sprin…...

力扣hot100 ——搜索二维矩阵 || m+n复杂度优化解法

编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列。每列的元素从上到下升序排列。 解题思路&#xff1a; 借助行和列有序特性&#xff0c;不断按行或者列缩小范围&#xff1b;途中数字表示每…...

娱乐使用,可以生成转账、图片、聊天等对话内容

软件介绍 今天要给大家介绍一款由吾爱大佬 lifeixue 开发的趣味软件。它的玩法超丰富&#xff0c;能够生成各式各样的角色&#xff0c;支持文字聊天、发红包、转账、发语音以及分享图片等多种互动形式&#xff0c;不过在分享前得着重提醒&#xff0c;此软件仅供娱乐&#xff0…...

【PyQt5】python可视化开发:PyQt5介绍,开发环境搭建快速入门

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…...

基于服务器使用 apt 安装、配置 Nginx

&#x1f9fe; 一、查看可安装的 Nginx 版本 首先&#xff0c;你可以运行以下命令查看可用版本&#xff1a; apt-cache madison nginx-core输出示例&#xff1a; nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码&#xff1a; https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵&#xff0c;其中每行&#xff0c;每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid&#xff0c;其中有多少个 3 3 的 “幻方” 子矩阵&am…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...

解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用

在工业制造领域&#xff0c;无损检测&#xff08;NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统&#xff0c;以非接触式光学麦克风技术为核心&#xff0c;打破传统检测瓶颈&#xff0c;为半导体、航空航天、汽车制造等行业提供了高灵敏…...

pycharm 设置环境出错

pycharm 设置环境出错 pycharm 新建项目&#xff0c;设置虚拟环境&#xff0c;出错 pycharm 出错 Cannot open Local Failed to start [powershell.exe, -NoExit, -ExecutionPolicy, Bypass, -File, C:\Program Files\JetBrains\PyCharm 2024.1.3\plugins\terminal\shell-int…...