OCR的评价指标和常用数据集

1.OCR任务简介

OCR(Optical Character Recognition,光学字符识别)是指对包含文本内容的图像或者视频进行处理识别,并提取其中所包含的文字及排版信息的过程。例如,一个常见的应用是将包含文档图像的不可编辑状态的 PDF 文档通过 OCR 技术识别后,转换为可编辑状态的 Word 格式文档[1]。例如,一个常见的应用是将包含文档图像的不可编辑状态的 PDF 文档通过 OCR 技术识别后,转换为可编辑状态的 Word 格式文档。

1.1 应用场景

通常来说,根据不同文本内容的特性而言,OCR应用场景可以分为以下几类:

  • 印刷体文本识别:现代计算机字体编排并印刷的文本内容识别。

  • 手写文本识别:签名等手写文本识别。

  • 公式文本识别:数学公式等文本识别,比如将数学公式图片转为LaTex或者MD代码。

  • 场景文本识别:发票、火车票、招牌等文本识别。

  • 古籍文本识别:古籍文档与现代印刷的排版和布局通常具有很大的差别,例如,阅读顺序可能自上而下,自右向左等。因此,使用基于现代文档数据开发的 OCR 技术和模型在包含这些内容的图像上的识别效果往往不够好。因此,在对大量古籍进行数字化保护的过程中,催生了专门针对该类型文档内容进行识别的 OCR 技术。

1.2 OCR任务流程

OCR任务按照算法可分为传统方法和深度学习方法。

传统方法主要包括图像预处理(噪声过滤、灰度转换、图像旋转矫正、二值化等)、版面分析(表格线检测、关键区域的特征匹配、文字区域分段分行等)、字符切分、字符特征提取、字符特征匹配、版面理解、格式化数据输出。

深度学习方法有图像预处理、文字检测/分割、文字识别等,文字检测/分割从包含文字的目标图片中准确找到文字所在位置,标注形式通常为polygon、bbox或图片。文字识别从纯文字图片或上述的检测框中得到文字内容,标注形式为text。

深度学习方法分为两阶段和端到端两种,两阶段就是上面的先进行图片文字检测,然后在进行文字识别。端到端方式直接输入图片,得到文字识别结果。

2. OCR任务的评价指标

2.1 两阶段算法的评价指标

检测阶段跟图像目标检测中的使用指标相似,一般使用检测框和标注框的IOU值进行评估。IOU大于某个阈值判断为检测正确,但是不同于一般的通用目标检测框的点在于有部分的检测框和标注框是采用多边形进行表示。

文字识别阶段的评价指标有CER(Character Error Rate,字符错误率)、WER(Word Error Rate,单词错误率)、编辑距离、准确率、召回率、F1 Score等

  • 准确率:正确识别的字符数占总字符数的比例。适用于字符清晰、字体规范的数据集。正确识别的字符数占总字符数的比例。适用于字符清晰、字体规范的数据集。

  • 召回率:实际识别出的字符数与所有应被识别的字符数的比例。反映系统的查全率。实际识别出的字符数与所有应被识别的字符数的比例。反映系统的查全率。

  • 精准率:识别出的文本与原始文本的匹配度,通常使用编辑距离或Levenshtein距离来衡量。

  • WER:衡量识别出的句子与原始句子之间的差异。它是插入、删除和替换错误的总和与总词数的比值。

  • CER:类似于WER,但关注单个字符的错误。CER是插入、删除和替换错误的总和与总字符数的比值。

为了更全面地评估OCR系统,通常会结合使用以上多种指标。此外,还可以进行交叉验证来评估模型在不同数据子集上的泛化能力。为了更全面地评估OCR系统,通常会结合使用以上多种指标。此外,还可以进行交叉验证来评估模型在不同数据子集上的泛化能力。

可以使用token accuracy来作为识别效果的评价指标,跟wer和cer相似,根据分词后的token识别准确率进行评估。

端到端(End-to-End)的OCR方式的评价指标跟两阶段中的识别阶段一样,基本也是采用上述那些评估指标。

2.2 其它OCR评估指标

除了识别精度,识别的速度也是非常重要的衡量ocr性能的指标,尤其在移动端和嵌入式平台的推理,决定是否可用的衡量标准。除了识别精度,识别的速度也是非常重要的衡量ocr性能的指标,尤其在移动端和嵌入式平台的推理,决定是否可用的衡量标准。

预训练模型大小,即存放训练模型参数文件的大小,这对移植到移动端或嵌入式台的使用很重要即存放训练模型参数文件的大小,这对移植到移动端或嵌入式台的使用很重要

3. OCR任务常用数据集

4. 评价指标实例

用单词错误率WER指标评估:

import evaluate

wer = evaluate.load("wer")
wer_res = wer.compute(predictions=["hello there"], references=["hello there, i am"])
print(wer_res)

使用字符错误率CER指标评估:

import evaluate

cer = evaluate.load("cer")
cer_res = wer.compute(predictions=["hello there"], references=["hello there, i am"])
print(cer_res)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【人工智能的深度分析与最新发展趋势】

人工智能的深度分析与最新发展趋势 引言 人工智能(AI)是现代科技的重要组成部分,它涉及模拟人类智能的算法和技术。随着计算能力的提升和数据量的激增,AI的应用正在迅速渗透到各个行业。本文将深入分析人工智能的概念、技术、应…

【JavaWeb后端学习笔记】Mybatis基础操作以及动态SQL(增、删、改、查)

Mybatis 0、环境准备0.1 准备数据库表emp;0.2 准备SpringBoot工程0.3 配置文件中引入数据库连接信息0.4 创建对应的实体类0.5 准备Mapper接口 1、MyBatis基础操作1.1 删除1.2 新增(主键返回)1.3 更新1.4 查询(解决字段名与类属性名…

QT5 Creator (Mingw编译器) 调用VS2019 (阿里云 oss C++库) 报错的解决方法

方法就是不要用VS2019编译,要用MINgw32编译。注意要安装高版本的qt,其自带的mingw编译器才能支持,找不到qt5cored.dll,就把qt5core.dll改名为qt5cored.dll。 编译命令如下: cmake -G "MinGW Makefiles" ^-…

Scala—Slice(提取子序列)方法详解

Scala—Slice(提取子序列)方法详解 在 Scala 中,slice 方法用于从集合中提取一个连续的子序列(切片)。可以应用于多种集合类型,如 List、Array、Seq 等。 一、slice 方法的定义 slice 根据提供的起始索引…

Alibaba EasyExcel 导入导出全家桶

一、阿里巴巴EasyExcel的优势 首先说下EasyExcel相对 Apache poi的优势: EasyExcel也是阿里研发在poi基础上做了封装,改进产物。它替开发者做了注解列表解析,表格填充等一系列代码编写工作,并将此抽象成通用和可扩展的框架。相对p…

基于SpringBoot+Vue的美妆购物网站

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

【Altium Designer 】AD如何使用嘉立创元器件的3D封装

1.下载3D封装 以STM32F407VGT6为例,进入嘉立创商城网站,找到需要的元器件封装 复制编号,打开嘉立创EDA,编译器选择专业版,新建工程,点击PCB1 复制编号在搜索框中,点击搜索,然后放置…

轨道力学:兰伯特问题

轨道力学:兰伯特问题 引言 在轨道力学中,兰伯特问题是指在已知两个位置矢量和它们之间的飞行时间的情况下,求解连接这两个位置的轨道路径问题。该问题以18世纪的数学家约翰海因里希兰伯特(Johann Heinrich Lambert)命…

计算机网络 第5章 运输层

计算机网络 (第8版) 第 5 章 传输层5.4 可靠传输的原理5.4.1 停止等待协议5.4.2 连续ARQ协议 5.5 TCP报文段的首部格式5.6 TCP可靠传输的实现5.6.1 以字节为单位的滑动窗口5.6.2 超时重传时间的选择 5.7 TCP的流量控制5.7.1 利用滑动窗口实现流量控制 5.…

【AI系统】EfficientNet 系列

EfficientNet 系列 本文主要介绍 EffiicientNet 系列,在之前的文章中,一般都是单独增加图像分辨率或增加网络深度或单独增加网络的宽度,来提高网络的准确率。而在 EfficientNet 系列论文中,会介绍使用网络搜索技术(NAS)去同时探索…

debian编译失败

A、缘由和分析 debian的代码在删除该路径下的2个包后, 重新全编,编译不过的问题。 至于我为什么删除这2个包,这是因为在sdk第一次编译时一些文件已经打包进去了,我现在的修改无法更新进img中,而现在我的项目中不需要…

2024年12月5日Github流行趋势

项目名称:HelloGitHub 项目维护者:521xueweihan, yaowenqiang, daixiang0等项目介绍:分享 GitHub 上有趣、入门级的开源项目。项目star数:95,244项目fork数:9,707 项目名称:Best-websites-a-programmer-sh…

大数据新视界 -- 大数据大厂之 Hive 临时表与视图:灵活数据处理的技巧(上)(29 / 30)

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

第一部分:基础知识 3. 数据类型 --[MySQL轻松入门教程]

第一部分:基础知识 3. 数据类型 --[MySQL轻松入门教程] MySQL 支持多种数据类型,这些数据类型可以分为几大类:数值类型、字符串类型、日期和时间类型、二进制类型以及枚举和集合。每种类型都有其特定的用途和存储需求。以下是 MySQL 中常用的数据类型的详细介绍: 1. 数值…

百问FB显示开发图像处理 - 图像调整

2.4 图像调整 2.4.1 图像的缩放 2.4.1.1 图像缩放算法浅析 图像缩放算法有很多种,这里参考网友"lantianyu520"所著的"图像缩放算法"。 原理浅析 ​ 要理解这个图像缩放算法的原理,最重要的是需要理解:对于图像上的每…

嵌入式驱动开发详解5(ioctl的使用)

文章目录 ioctl介绍应用层详解驱动层详解ioctl的cmd实验例程 ioctl介绍 linux内核给用户提供了两类系统调用函数:一类是数据操作函数,比如read、write…。 另外一类函数是非数据操作函数,比如ioctl…,用户程序可以用ioctl给底层设…

从零开始使用GOT-OCR2.0——多模态OCR项目:微调数据集构建 + 训练(解决训练报错,成功实验微调训练)

在上一篇文章记录了GOT-OCR项目的环境配置和基于官方模型参数的基础使用。环境安装的博文快速链接: 从零开始使用GOT-OCR2.0——多模态通用型OCR(非常具有潜力的开源OCR项目):项目环境安装配置 测试使用-CSDN博客 本章在环境配置…

Facebook:筑牢隐私安全堡垒,守护社交净土

在全球社交媒体平台中,Facebook一直是风靡全球的佼佼者。然而,随着数字化信息的迅速膨胀,用户隐私保护的重要性日益凸显。面对用户对数据安全性的高度重视,Facebook致力于通过一系列措施来确保隐私保护,守护每位用户的…

VBA信息获取与处理第四个专题第二节:将工作表数据写入VBA数组

《VBA信息获取与处理》教程(版权10178984)是我推出第六套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。这部教程给大家讲解的内容有:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互…

python通过ODBC连接神通数据库

1、安装神通数据库 2、安装python 3、安装pyodbc pip3 install pyodbc-5.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 注:pyodbc要和python版本相对应 4、安装unixodbc 5、配置神通数据库ODBC数据源 6、示例代码如下 #!/usr/bin/python…