文字识别软件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 连接上进行全双工通信的协议,它允许在浏览器和服务器之间进行实时的、双向的通信。相对于传统的基于请求和响应的 HTTP 协议ÿ…...
猿大师办公助手对比其他WebOffice在线编辑Office插件有什么优势
1. 原生Office功能完整嵌入,排版一致性保障 猿大师办公助手直接调用本地安装的微软Office、金山WPS或永中Office,支持所有原生功能(如复杂公式、VBA宏等),确保网页编辑与本地打开的文档排版完全一致。 提供OLE嵌入和完…...
STM32创建静态库lib
创建静态库lib 1. 新建工程1.1 创建工程文件夹1.2 编写用户相关代码1.2.1 stm32f4xx_it.h1.2.2 stm32f4xx_it.c1.2.3 标准库配置:stm32f4xx_conf.h1.2.4 HAL库的配置:stm32f4xx_hal_conf.h1.2.5 LL库配置: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 是一个开源的大型语言模型(LLM)本地运行框架,旨在简化大模型的部署和管理流程,使开发者、研究人员及爱好者能够高效地在本地环境中实验和…...
javaEE-13.spring MVC
目录 什么是spring web mvc: 什么是MVC: 一.创建一个spring项目 二.实现功能: 创建helloController.java项目: 建立连接: RequestMapping注解: 1.RequestMapping注解的使用: 2. RequestMapping 是GET还是POST请求 3.指定请求方法 RestControll…...
C/C++ | 每日一练 (2)
💢欢迎来到张胤尘的技术站 💥技术如江河,汇聚众志成。代码似星辰,照亮行征程。开源精神长,传承永不忘。携手共前行,未来更辉煌💥 文章目录 C/C | 每日一练 (2)题目参考答案封装继承多态虚函数底…...
Nginx 常用命令和部署详解及案例示范
一、Nginx常用命令 1.1 启动 Nginx 要启动 Nginx 服务,可以使用以下命令: sudo systemctl start nginx1.2 停止 Nginx 如果需要停止 Nginx 服务,可以使用以下命令: sudo systemctl stop nginx1.3 重启 Nginx 在修改了 Nginx…...
GO大模型应用开发框架-
Eino 旨在提供基于 Golang 语言的终极大模型应用开发框架。 它从开源社区中的诸多优秀 LLM 应用开发框架,如 LangChain 和 LlamaIndex 等获取灵感,同时借鉴前沿研究成果与实际应用,提供了一个强调简洁性、可扩展性、可靠性与有效性࿰…...
保姆级!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 。该矩阵具有以下特性: 每行的元素从左到右升序排列。每列的元素从上到下升序排列。 解题思路: 借助行和列有序特性,不断按行或者列缩小范围;途中数字表示每…...
娱乐使用,可以生成转账、图片、聊天等对话内容
软件介绍 今天要给大家介绍一款由吾爱大佬 lifeixue 开发的趣味软件。它的玩法超丰富,能够生成各式各样的角色,支持文字聊天、发红包、转账、发语音以及分享图片等多种互动形式,不过在分享前得着重提醒,此软件仅供娱乐࿰…...
【PyQt5】python可视化开发:PyQt5介绍,开发环境搭建快速入门
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...
zmq源码分析之消息可读通知机制
文章目录核心流程详细实现1. 网络数据接收与解析2. 消息传递到 Socket3. 用户层通知机制4. zmq_poll 实现技术要点1. 消息完整性检测2. 通知机制3. 线程安全完整流程图示总结核心流程 ZeroMQ 检测完整消息可读并通知用户的完整流程: 网络数据接收:stre…...
仅限首批GCC 14.3+Clang 19.0开发者访问:C++26反射AST遍历器底层内存布局与constexpr反射缓存机制(附可运行benchmark)
更多请点击: https://intelliparadigm.com 第一章:C26反射特性在元编程中的应用源码分析 C26 正式引入静态反射(static reflection)核心设施,基于 std::reflexpr 和 meta::info 类型系统,使编译期类型 int…...
League Akari重生计时器与CD监控:游戏内实时辅助功能深度解析
League Akari重生计时器与CD监控:游戏内实时辅助功能深度解析 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 在快节奏的《英雄联盟…...
飞书多维表API:三种数据筛选策略的性能与场景抉择
1. 飞书多维表API数据筛选的三种策略解析 第一次接触飞书多维表API时,最让我头疼的就是数据筛选问题。记得去年做电商数据分析系统时,运营团队每天需要从近10万条订单记录中提取特定平台的数据。最初简单粗暴地全量拉取数据,结果接口响应慢得…...
C语言内存安全面试必考TOP 15题(2026最新真题库+逐行安全分析)
更多请点击: https://intelliparadigm.com 第一章:C语言内存安全面试全景概览 C语言因其直接操作内存的特性,在系统编程与嵌入式开发中不可替代,但也成为内存安全漏洞的高发区。面试官常通过内存管理类问题考察候选人对底层机制…...
机器学习重采样方法:原理、实现与工程实践
1. 理解重采样方法的核心价值在机器学习实践中,我们经常面临一个根本性矛盾:模型需要在训练数据上学习规律,但最终要在未见过的数据上表现良好。这就引出了机器学习中最关键的挑战之一——如何准确评估模型在真实场景中的表现?重采…...
二叉树先序线索化及先序线索二叉树找后继
#include <stdio.h> #include <stdlib.h>// 线索二叉树结点 typedef struct ThreadNode {int data;struct ThreadNode *lchild, *rchild;int ltag, rtag; } ThreadNode, *ThreadTree;ThreadNode *pre NULL;void create(ThreadTree &T) {T (ThreadNode *)mal…...
AutoCAD字体缺失终结者:FontCenter插件完整使用指南
AutoCAD字体缺失终结者:FontCenter插件完整使用指南 【免费下载链接】FontCenter AutoCAD自动管理字体插件 项目地址: https://gitcode.com/gh_mirrors/fo/FontCenter 你是否经常在打开AutoCAD图纸时遇到字体缺失的困扰?FontCenter正是为解决这一…...
BilibiliDown:5分钟掌握B站视频音频下载的终极免费工具指南
BilibiliDown:5分钟掌握B站视频音频下载的终极免费工具指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirr…...
收藏备用|2026年AI大模型风口已至!小白程序员必看,抓住机会实现职业翻身
本文专为CSDN平台小白程序员、转行从业者打造,详细拆解2026年AI大模型的核心概念、最新应用场景及就业前景,深度分析模型研发、算法、数据科学等六大热门岗位的职责、2026年最新要求,独家整理从基础入门到前沿进阶的七阶段学习路线࿰…...
