PaddleOCR关键信息抽取(KIE)的训练(SER训练和RE训练)错误汇总
1.SER训练报错: SystemError: (Fatal) Blocking queue is killed because the data reader raises an exception
1.1.问题描述
在执行训练任务的时候报错
单卡训练
python3 tools/train.py -c train_data/my_data/ser_vi_layoutxlm_xfund_zh.yml
错误信息如下:
Traceback (most recent call last):File "/root/anaconda3/envs/paddle38/lib/python3.8/threading.py", line 932, in _bootstrap_innerself.run()File "/root/anaconda3/envs/paddle38/lib/python3.8/threading.py", line 870, in runself._target(*self._args, **self._kwargs)File "/root/anaconda3/envs/paddle38/lib/python3.8/site-packages/paddle/fluid/dataloader/dataloader_iter.py", line 536, in _thread_loopbatch = self._get_data()File "/root/anaconda3/envs/paddle38/lib/python3.8/site-packages/paddle/fluid/dataloader/dataloader_iter.py", line 638, in _get_dataraise RuntimeError("DataLoader {} workers exit unexpectedly, " \
RuntimeError: DataLoader 1 workers exit unexpectedly, pids: 1129
Traceback (most recent call last):File "tools/train.py", line 208, in <module>main(config, device, logger, vdl_writer)File "tools/train.py", line 180, in mainprogram.train(config, train_dataloader, valid_dataloader, device, model,File "/paddle/PaddleOCR/tools/program.py", line 258, in trainfor idx, batch in enumerate(train_dataloader):File "/root/anaconda3/envs/paddle38/lib/python3.8/site-packages/paddle/fluid/dataloader/dataloader_iter.py", line 745, in __next__self._reader.read_next_list()[0])
SystemError: (Fatal) Blocking queue is killed because the data reader raises an exception.[Hint: Expected killed_ != true, but received killed_:1 == true:1.] (at /paddle/paddle/fluid/operators/reader/blocking_queue.h:175)

1.2.问题分析
网上查了很多资料,结果都无法解决,然后认真分析错误日志以及官网提供的测试数据XFUND/zh_train/train.json文件和我们使用PPOCRLabel打标后生成的Label.txt文件,发现我们的Label.txt文件中每一个标注都缺少一个label属性。
1.3.解决方案
编辑我们的Label.txt文件,在"points"字段前添加一个"label"字段。
我直接做了一个字符串替换
替换的字符串: , “points”
替换后的字符串: ,“label”: “other”, “points”
最终的效果是

每一个识别的box都需要有一个label字段。
添加完成以后,再次执行,成功训练完成。
2. RE训练报错: KeyError: ‘linking’
2.1.问题分析
同上的问题一样,我们的Label.txt文件中每一个标注都缺少一个linking属性。
2.2.解决方案
编辑我们的Label.txt文件,在"points"字段前添加一个"linking"字段。
我直接做了一个字符串替换
替换的字符串: , “points”
替换后的字符串: ,“linking”: [], “points”

3.RE训练报错: KeyError: 'NONE’或KeyError: ‘B-NONE’
3.1.问题描述
在执行re训练的时候报错:
执行脚本:
vim train_data/myimgs/re_vi_layoutxlm_xfund_zh.yml
错误信息:
, error happened with msg: Traceback (most recent call last):File "/paddle/PaddleOCR/ppocr/data/simple_dataset.py", line 137, in __getitem__outs = transform(data, self.ops)File "/paddle/PaddleOCR/ppocr/data/imaug/__init__.py", line 56, in transformdata = op(data)File "/paddle/PaddleOCR/ppocr/data/imaug/label_ops.py", line 1093, in __call__gt_label = self._parse_label(label, encode_res)File "/paddle/PaddleOCR/ppocr/data/imaug/label_ops.py", line 1177, in _parse_labelgt_label.append(self.label2id_map[("b-" + label).upper()])
KeyError: 'B-NONE'

3.2.问题分析
查看了一下是/paddle/PaddleOCR/ppocr/data/imaug/label_ops.py文件报错,打开看了一下,发现里面的label写法是固定的,只有[“other”, “others”, “ignore”]这几个,其他的标签都会报错。
3.3.解决方案
修改label_ops.py文件
vim /paddle/PaddleOCR/ppocr/data/imaug/label_ops.py
根据错误提示,大概在1177行
修改前的内容:
def _parse_label(self, label, encode_res):gt_label = []if label.lower() in ["other", "others", "ignore"]:gt_label.extend([0] * len(encode_res["input_ids"]))else:gt_label.append(self.label2id_map[("b-" + label).upper()])gt_label.extend([self.label2id_map[("i-" + label).upper()]] *(len(encode_res["input_ids"]) - 1))return gt_label
修改后的内容:
def _parse_label(self, label, encode_res):gt_label = []if label.lower() in ["other", "others", "ignore","header","question","answer","none","key","value"]:gt_label.extend([0] * len(encode_res["input_ids"]))else:gt_label.append(self.label2id_map[("b-" + label).upper()])gt_label.extend([self.label2id_map[("i-" + label).upper()]] *(len(encode_res["input_ids"]) - 1))return gt_label

相关文章:
PaddleOCR关键信息抽取(KIE)的训练(SER训练和RE训练)错误汇总
1.SER训练报错: SystemError: (Fatal) Blocking queue is killed because the data reader raises an exception 1.1.问题描述 在执行训练任务的时候报错 单卡训练 python3 tools/train.py -c train_data/my_data/ser_vi_layoutxlm_xfund_zh.yml错误信息如下: T…...
信息收集之搜索引擎
Google Hacking 也可以用百度,不过谷歌的搜索引擎更强大 site 功能:搜索指定域名的网页内容,可以用来搜索子域名、跟此域名相关的内容 示例: site:zhihu.com 搜索跟zhihu.com相关的网页“web安全” site:zhihu.com 搜索zhihu…...
Flutter(四)布局类组件
目录布局类组件简介布局原理与约束线性布局(Row和Column)弹性布局流式布局(Wrap、Flow)层叠布局(Stack、Positioned)对齐与相对定位(Align)Align和Stack对比Center组件LayoutBuilder…...
【黑马】Java基础从入门到起飞目录合集
视频链接: Java入门到起飞(上部):BV17F411T7AoJava入门到起飞(下部):BV1yW4y1Y7Ms 学习时间: 2023/02/01 —— 2023/03/09断断续续的学习,历时大概37天,完结撒…...
PMP考前冲刺3.10 | 2023新征程,一举拿证
题目1-2:1.在最近的一次耗时四周的迭代中,赫克托尔所在的敏捷团队刚完成了10 个用户故事点的开发、测试和发布,那么团队的速度是?A. 10B. 4C. 5D.402.产品负责人奥佩,倾向于在短周期内看到工作产品的新版本,…...
JavaScript Math常用方法
math是JavaScript的一个内置对象,它提供了一些数学属性和方法,可以对数字进行计算(用于Number类型)。 math和其他全局对象不同,它不是一个构造器,math的所有方法和属性都是静态的,直接使用并传入…...
【C++】模板进阶
文章目录一、非类型模板参数1、非类型模板参数2、C11 中的 array 类二、模板的特化1、模板特化的概念2、函数模板特化3、类模板特化3.1 全特化3.2 偏特化三、模板的分离编译四、模板总结一、非类型模板参数 1、非类型模板参数 模板参数分为类型形参与非类型形参,类…...
三板斧解决leetcode的链表题
在《波奇学单链表》中我们提到单链表的两个特点单向性。头节点尾节点的特殊性导致分类讨论的情况。如何看单链表?让我们简化成下图cur表示当前节点,下图表示cur移动,圆圈表示值用哨兵卫节点(新的头节点)和把尾节点看成NULL来把头尾节点一般化…...
全生命周期的云原生安全框架
本博客地址:https://security.blog.csdn.net/article/details/129423036 一、全生命周期的云原生安全框架 如图所示: 二、框架说明 在上图中,我们从两个维度描述各个安全机制,横轴是开发和运营阶段,细分为编码、测试…...
【本地网站上线】ubuntu搭建web站点,并内网穿透发布公网访问
【本地网站上线】ubuntu搭建web站点,并内网穿透发布公网访问前言1. 本地环境服务搭建2. 局域网测试访问3. 内网穿透3.1 ubuntu本地安装cpolar3.2 创建隧道3.3 测试公网访问4. 配置固定二级子域名4.1 保留一个二级子域名4.2 配置二级子域名4.3 测试访问公网固定二级子…...
电脑怎么重装系统?教你轻松掌握这些方法
重新安装计算机系统有两种原因:一种是计算机系统可以正常使用,但是电脑比较卡,为了提高它的运行速度,所以想要通过重新安装系统来解决这个问题;另一种原因是计算机系统文件丢失,系统出现蓝屏,或者黑屏的情况…...
leetcode-每日一题-2379(简单,字符串)
久违的简单题......给你一个长度为 n 下标从 0 开始的字符串 blocks ,blocks[i] 要么是 W 要么是 B ,表示第 i 块的颜色。字符 W 和 B 分别表示白色和黑色。给你一个整数 k ,表示想要 连续 黑色块的数目。每一次操作中,你可以选择…...
SLF4J日志框架在项目中使用
介绍 SLF4J全称“Simple Logging Facade for Java”,作为各种日志框架的简单门面。例如: java.util.logging、logback 、 reload4j等。只需要切换日志框架的jar包依赖就可以切换日志框架。 SLF4J支持的日志框架包含如下: log4j:…...
Spark MLlib 模型训练
Spark MLlib 模型训练决策树随机森林GBDTSpark MLlib 开发框架下 : 监督学习 : 回归 (Regression) , 分类 (Classification) , 协同过滤 (Collaborative Filtering)非监督学习 : 聚类 (Clustering) 、频繁项集 (Frequency Patterns) 例子分类 : 算法分类 : 算法分类算法子分类…...
Python中变量的作用域精讲
文章目录前言一、局部变量二、全局变量前言 变量的作用域是指程序代码能够访问该变量的区域,如果超出该区域,再访问时就会出现错误。在程序中,一般会根据变量的 “有效范围” 将变量分为 “全局变量” 和 “局部变量”。 一、局部变量 局部变…...
数据仓库工程师的工作职责的相关介绍
1. BI 开发工程师的工作内容是什么? BI开发工程师(Business Intelligence Developer)是负责设计和开发企业级BI系统的专业人员。他们的主要工作是从多个数据源中提取、转换、加载和分析数据,以支持企业决策。以下是BI开发工程师的…...
ESP UART 介绍
1 UART 介绍 UART 是一种以字符为导向的通用数据链,可以实现设备间的通信。异步传输的意思是不需要在发送数据上添加时钟信息。这也要求发送端和接收端的速率、停止位、奇偶校验位等都要相同,通信才能成功。 1.1 UART 通信协议 一个典型的 UART 帧开始…...
第十三届蓝桥杯省赛Python大学B组复盘
目录 一、试题B:寻找整数 1、题目描述 2、我的想法 3、官方题解 4、另解 二、试题E:蜂巢 1、题目描述 2、我的想法 3、官方题解 三、试题F:消除游戏 1、题目描述 2、我的想法(AC掉58.3%,剩下全超时&#x…...
linux入门---vim的配置
这里写目录标题预备知识如何配置vimvim一键配置预备知识 在配置vim之前大家首先得知道一件事就是vim的配置是一人一份的,每个用户配置的vim都是自己的vim,不会影响到其他人,比如说用户xbb配置的vim是不会影响到用户wj的,虽然不同…...
Python简写操作(for、if简写、匿名函数)
Python简写操作(for、if简写、匿名函数)1. for 简写1.1 一层 for 循环1.2 两层 for 循环2. if 简写3. for 与 if 的结合简写4. 匿名函数 lambda1. for 简写 举个例子: y [1, 2, 3, 4, 5, 6] result [(i * 2) for i in y] print(result)# …...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...
YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...
vulnyx Blogger writeup
信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...
LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...
springboot 日志类切面,接口成功记录日志,失败不记录
springboot 日志类切面,接口成功记录日志,失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...
何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡
何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡 背景 我们以建设星云智控官网来做AI编程实践,很多人以为AI已经强大到不需要程序员了,其实不是,AI更加需要程序员,普通人…...
内窥镜检查中基于提示的息肉分割|文献速递-深度学习医疗AI最新文献
Title 题目 Prompt-based polyp segmentation during endoscopy 内窥镜检查中基于提示的息肉分割 01 文献速递介绍 以下是对这段英文内容的中文翻译: ### 胃肠道癌症的发病率呈上升趋势,且有年轻化倾向(Bray等人,2018&#x…...
