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

基于飞浆OCR的文本框box及坐标中心点检测JSON格式保存文本

OCR的文本框box及JSON数据保存

需求说明

一、借助飞浆框出OCR识别的文本框

二、以圆圈形式标出每个框的中心点位置

三、以JSON及文本格式保存OCR识别的文本

四、以文本格式保存必要的文本信息

解决方法

一、文本的坐标来自飞浆的COR识别
二、借助paddleocr的draw_ocr画出文本的外框
三、中心点由坐标的左上和右下均值得出
四、借助cv2.circle画出中心点

完整代码

import os
from PIL import Image
from paddleocr import PaddleOCR, draw_ocr
import cv2
def ocr_parse(img,parsePath):ocr = PaddleOCR()result = ocr.ocr(img, det=True)img_name = img.split('/')[-1].replace(".jpg", '')image = Image.open(img).convert('RGB')boxes = [line[0] for line in result[0]]im_show = draw_ocr(image, boxes, font_path=r'C:\Windows\Fonts\simfang.ttf')im_show = Image.fromarray(im_show)im_show.save( parsePath + img_name+"_V3.jpg")midimg = cv2.imread(parsePath + img_name+"_V3.jpg", 1)fields = []for field in result:for index, value in enumerate(field):fields.append({"box": field[index][0], "text": field[index][1]})dst_path = os.path.join(parsePath, img_name+'.json')with open(dst_path, 'w', encoding='utf8') as fw:json.dump(fields, fw)with open(dst_path, 'r', encoding='utf8') as fr:data_obj = json.load(fr)val=''for item in data_obj:left_top=item['box'][0]right_bottom=item['box'][2]txt = item['text'][0]center_x=(left_top[0]+right_bottom[0])/2center_y = (left_top[1] + right_bottom[1]) / 2print(left_top,'\t', right_bottom,'\t', txt,'\t',center_x,'\t',center_y)cv2.circle(midimg, (int(center_x),int(center_y)), 8, (0, 0, 255), 2)with open(os.path.join(parsePath, img_name+'.txt'), 'w', encoding='utf-8') as f:val+=str(left_top) + '\t' + str(right_bottom) + '\t' + txt + '\t' + str(center_x) + '\t' + str(center_y)+"\t"+str(int(midimg.shape[1]/2))+"\t"+str(int(midimg.shape[0]/2)) +"\n"f.write(val)f.close()cv2.circle(midimg, (int(midimg.shape[1]/2), int(midimg.shape[0]/2)), 16, (0, 255, 0), 2)cv2.imwrite(os.path.join(parsePath, img_name+'_V3.jpg'), midimg)if __name__ == '__main__':ocr_parse(r'F:/292.jpg',r'F:/output/')

执行结果

一、中心点及文本框:

二、JSON格式示例数据:

三、文本格式示例数据

相关文章:

基于飞浆OCR的文本框box及坐标中心点检测JSON格式保存文本

OCR的文本框box及JSON数据保存 需求说明 一、借助飞浆框出OCR识别的文本框 二、以圆圈形式标出每个框的中心点位置 三、以JSON及文本格式保存OCR识别的文本 四、以文本格式保存必要的文本信息 解决方法 一、文本的坐标来自飞浆的COR识别 二、借助paddleocr的draw_ocr画出…...

ubuntu 安装docker GPG error缺少公钥解决方法

文章目录 报错信息解决方案 报错信息 W: GPG error: http://mirrors.aliyun.com/docker-ce/linux/ubuntu focal InRelease: The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY 7EA0A9C3F273FCD8 E: The repository ‘http:…...

Laravel的知识点

1.{{ }} 是在 HTML 中内嵌 PHP 的 Blade 语法标识符,表示包含在该区块内的代码都将使用 PHP 来编译运行。 2.两种写法 3.return void 在这段注释中,"return void" 表示该函数或方法没有返回值。这意味着它执行某些操作或任务,但…...

STM32 基础知识(探索者开发板)--103讲 通用定时器

定时器溢出时间计算方法: Tout ((arr 1) * (psc 1)) / Ft us arr:自动重装载值 psc:时钟预分频数 定时器相关实验通用步骤 1.定时器初始化 a.定义结构体句柄 b.设基地址 c.设分频系数 d.设自动重装载值 e. 设计数模式 f.初始化定时器 2.外设模式配置 a.设置模式 d.映…...

mysqld_exporter使用

下载自己解压好 https://github.com/prometheus/mysqld_exporter/releases/download/v0.15.1/mysqld_exporter-0.15.1.linux-amd64.tar.gz在需要监控的数据库上执行 CREATE USER monit_test* IDENTIFIED BY Sfn4ZCHsK WITH MAX_USER_CONNECTIONS 3; GRANT PROCESS, REPLICATI…...

Java 解决远程调用 ssl 证书认证问题

Java 解决远程调用 ssl 证书认证问题 方法 1方法 2方法 3 方法 1 在 jdk 目录导入证书。 首先要下载 服务器 ssl 证书,下载完成之后。把它命名成 Root.cer 后面使用 cmd 命令行 在 jdk 目录导入。 例如 : jdk 的目录为:D:\JetBranins\Intel…...

kubernetes(k8s) Yaml 文件详解

YAML格式:用于配置和管理,YAML是一种简洁的非标记性语言,内容格式人性化,较易读。 1、查看API 资源版本标签 kubectl api-versions 2、编写资源配置清单 kubectl create -f nginx-test.yaml --validatefalse 2.3 查看创建的po…...

手拉手后端Springboot整合JWT

环境介绍 技术栈 springbootmybatis-plusmysqljava-jwt 软件 版本 mysql 8 IDEA IntelliJ IDEA 2022.2.1 JDK 1.8 Spring Boot 2.7.13 mybatis-plus 3.5.3.2 Json Web令牌简称JWT Token是在服务端产生的一串字符串是客户端访问资源接口(AP)时所需要的资源凭证。…...

小狐狸GPT付费2.4.9 去除授权弹窗版

后台安装步骤: 1、在宝塔新建个站点,php版本使用7.2 、 7.3 或 7.4,把压缩包上传到站点根目录,运行目录设置为/public 2、导入数据库文件,数据库文件是 /db.sql 3、修改数据库连接配置,配置文件是/.env 4、…...

Scrapy爬虫中合理使用time.sleep和Request

概述 在Scrapy爬虫中,我们需要深入分析time.sleep和Request对象对并发请求的影响。time.sleep函数用于在发起请求之前等待一段时间,而Request对象用于发送HTTP请求。我们必须仔细考虑这些操作对其他并发请求的潜在影响,以及在异步情况下可能…...

在Spring Cloud中使用Ribbon完成一个简单的负载均衡demo

Spring Cloud系列断更了有一段时间了,这段时间最近都在忙着项目上的事,天天修复bug以及调整需求,反正各种操劳,了解业务需求,然后开发相关功能,很久都没碰Spring Cloud系列的相关文章了,最近回头…...

mysql-5.6.16的内存泄漏问题

一、背景 有一台物理机上一个版本为5.6.16的从库出现了内存的增高,观测其日志可以发现,这台数据库已经oom很多次了,并且stop slave的时候会卡住非常长的时间才能停止 二、根本原因 上述的现象可以看到是一个明显的内存泄漏现象&#xff0c…...

相机内参标定理论篇------相机模型选择

相机种类&#xff1a; 当拿到一款需要标定内参的相机时&#xff0c;第一个问题就是选择那种的相机模型。工程上相机类型的划分并不是十分严格&#xff0c;一般来说根据相机FOV可以把相机大概分为以下几类&#xff1a; 长焦相机&#xff1a;< 标准相机&#xff1a;~&…...

java设计模式学习之【状态模式】

文章目录 引言状态模式简介定义与用途实现方式 使用场景优势与劣势在Spring框架中的应用状态示例代码地址 引言 设想你正在使用一个在线视频播放器观看电影。随着你的互动&#xff0c;播放器可能处于不同的状态&#xff1a;播放、暂停、缓冲或结束。每个状态下&#xff0c;播放…...

使用aspose.Words更新表格列宽

public static bool UpdateTableStyle(string filePath) { try { Document doc new Document(); //样式 Style style doc.Styles.Add(StyleType.Paragraph, "cellStyle"); style.Font.Name "simsun"; PageSetup pageSet doc.Sections[0].PageSetup; pa…...

pycharm 工具栏不见了

新版pycharm后&#xff0c; 菜单栏和工具栏不见了 目录 我发现的解决方法&#xff1a; 其他旧版的解决方法&#xff1a; 我发现的解决方法&#xff1a; 其他旧版的解决方法&#xff1a; 另外&#xff0c;一些使用pycharm的新手可能会由于不熟悉软件的功能而误操作&#xff…...

图灵日记之java奇妙历险记--类和对象

目录 类的定义和使用类的定义格式 类的实例化类和对象的说明 this引用this引用的特性 对象的构造及初始化就地初始化构造方法 封装包导入包中的类自定义包 static成员static修饰成员变量static修饰成员方法 代码块代码块概念及分类构造代码块静态代码块 匿名对象 类的定义和使用…...

Kotlin 枚举类

使用 enum 修饰符&#xff1b;每个枚举常量都是一个对象&#xff0c;枚举常量以逗号分隔 // 枚举类 enum class Direction {NORTH, SOUTH, WEST, EAST }// 每一个枚举都是枚举类的实例&#xff0c;所以可以这样初始化 enum class Color(val rgb: Int) {RED(0xFF0000),GREEN(0x…...

可运营的Leadshop开源商城小程序源码 +H5公众号+带视频教程

源码简介 Leadshop是一款出色的开源电商系统&#xff0c;具备轻量级、高性能的特点&#xff0c;并提供持续更新和迭代服务。该系统采用前后端分离架构&#xff08;uniappyii2.0&#xff09;&#xff0c;以实现最佳用户体验为目标。 前端部分采用了uni-app、ES6、Vue、Vuex、V…...

Qt底层机制之对象树总结

Qt对象树是Qt框架中的一个重要概念,它用于管理对象之间的关系和生命周期。除了常规的对象树结构,Qt还提供了一些特殊的用法来扩展对象树的功能和灵活性。 1. 父子关系:Qt对象树通过设置父对象来建立父子关系。父对象负责管理子对象的内存分配和释放。这种关系可以通过`setP…...

SEM教程丨如何用“场景词”突围,月揽165个询盘?

很多工业设备老板觉得SEM就是“谁出价高谁就赢”&#xff0c;结果往往是钱烧了一大堆&#xff0c;机器没卖出去几台。今天我们要复盘的是某食品安检设备公司的实操案例&#xff0c;看看它是如何摆脱“无效烧钱”&#xff0c;稳稳拿下月均165个精准咨询的 &#x1f34e;。 一、 …...

论文查重会查表格么?

会&#xff0c;但不是所有表格都按同一种方式查。先说结论&#xff1a;论文里的表格&#xff0c;学校查重一般是会处理的。只是“查到什么程度”&#xff0c;看系统。分几种情况说。1. Word里的可编辑表格&#xff1a;会查如果你的表格是这种&#xff1a;Word 直接插入的表格单…...

RK3568扩展模块实战:4G/Wi-Fi 6/多串口集成与Linux驱动适配

1. 项目概述&#xff1a;当“小”模块遇上“大”平台最近在折腾一块瑞芯微的RK3568开发板&#xff0c;这板子性能不错&#xff0c;四核A55加上独立的NPU&#xff0c;做边缘计算、多媒体网关或者轻量级服务器都挺合适。但在实际项目落地时&#xff0c;我遇到了一个几乎所有硬件开…...

BepInEx框架指南:从游戏玩家到模组开发者的完整升级路径

BepInEx框架指南&#xff1a;从游戏玩家到模组开发者的完整升级路径 【免费下载链接】BepInEx Unity / XNA game patcher and plugin framework 项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx 你是否曾经羡慕过那些能够为游戏添加新内容、修改界面、甚至创…...

运维视角:用非Root用户安全部署KingbaseES数据库,附服务注册与状态检查命令

运维实战&#xff1a;以非Root用户安全部署KingbaseES数据库的完整指南 在企业的生产环境中&#xff0c;数据库作为核心数据存储组件&#xff0c;其部署安全性往往被许多运维团队忽视。传统教程中常见的"root用户直接安装"方式&#xff0c;实际上为企业埋下了严重的安…...

打通飞书与GitLab:基于Webhook的事件通知与精准@实践指南

1. 为什么需要打通飞书与GitLab的通知系统 在软件开发团队中&#xff0c;代码仓库的每一次变更都可能影响整个项目进度。传统的做法是开发人员手动在群里相关同事&#xff0c;或者依赖邮件通知&#xff0c;这种方式效率低下且容易遗漏重要信息。我曾经参与过一个跨时区协作项目…...

全志Tina Linux嵌入式开发实战:从环境搭建到系统定制全流程指南

1. 项目概述&#xff1a;为什么需要一份系统级的开发指南&#xff1f;在嵌入式Linux开发领域&#xff0c;尤其是基于全志这类主流国产芯片平台的开发&#xff0c;新手和老手都会面临一个共同的困境&#xff1a;官方文档往往散落在各处&#xff0c;有SDK的配置说明、有内核的移植…...

终极指南:10分钟将WinForms应用升级为现代化Material Design界面

终极指南&#xff1a;10分钟将WinForms应用升级为现代化Material Design界面 【免费下载链接】MaterialSkin Theming .NET WinForms, C# or VB.Net, to Googles Material Design Principles. 项目地址: https://gitcode.com/gh_mirrors/mat/MaterialSkin 你是否厌倦了传…...

终极MifareOneTool完整指南:Windows平台最简单的一键NFC卡片管理方案

终极MifareOneTool完整指南&#xff1a;Windows平台最简单的一键NFC卡片管理方案 【免费下载链接】MifareOneTool A GUI Mifare Classic tool on Windows&#xff08;停工/最新版v1.7.0&#xff09; 项目地址: https://gitcode.com/gh_mirrors/mi/MifareOneTool 你是否曾…...

UniApp跨端开发实战:一套代码给TabBar同时穿上iOS和Material Design的“毛玻璃”外衣

UniApp跨端毛玻璃TabBar实战&#xff1a;融合iOS与Material Design的设计语言 在移动应用开发中&#xff0c;底部导航栏&#xff08;TabBar&#xff09;作为核心交互组件&#xff0c;其设计直接影响用户体验。随着iOS毛玻璃&#xff08;Blur Effect&#xff09;和Android Mater…...