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

这篇具有很好参考价值的文章主要介绍了基于飞浆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])/2
            center_y = (left_top[1] + right_bottom[1]) / 2
            print(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/')

执行结果

一、中心点及文本框:

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

二、JSON格式示例数据:

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

三、文本格式示例数据

基于飞浆OCR的文本框box及坐标中心点检测JSON格式保存文本,ocr文章来源地址https://www.toymoban.com/news/detail-770416.html

到了这里,关于基于飞浆OCR的文本框box及坐标中心点检测JSON格式保存文本的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 从零开始Vue项目中使用MapboxGL开发三维地图教程(四)改变鼠标style、地图置于单击feature中心、量测距离和polgon面积和中心点坐标

    总章节 从零开始Vue项目中使用MapboxGL开发三维地图教程 (一) MapboxGL介绍以及前期vue项目的搭建 (二) Mapbox地图样式 (三) 添加全屏,缩放旋转和比例控制面板以及自定义图标、标记点击弹窗、地图平移等功能 (四) 改变鼠标style、地图置于单击feature中心、量测距离和polgon面积和中

    2024年02月09日
    浏览(52)
  • unity shader中获得模型中心点 + 中心点详解

    参考连接: Unity Shader中获取模型中心点的世界坐标_unity获取物体坐标_VirtualCreator的博客-CSDN博客 实际是当前材质球挂接的Renderer的mesh定义的坐标原点,但是有两种情况: 1 Renderer是MeshRender 原点就是当前mesh的坐标原点. 当前body的mesh , 坐标中心就是原点 2 SkinnedMeshRender  是Ro

    2024年02月13日
    浏览(46)
  • PCL圆柱中心轴线提取、中心点提取

    适用于 圆柱中心轴线计算,轴线的端点、中心点计算 附代码完整实现及测试代码。 相关链接: C++ PCL点云圆柱结构提取/立杆结构提取

    2024年02月14日
    浏览(51)
  • 直线围绕中心点旋转(类似时钟)

    2024年04月09日
    浏览(56)
  • unity 获取复杂物体(模型)中心点

    2024年02月02日
    浏览(53)
  • UE4中修改模型的中心点

    在UE4中的模型中心点一般都在模型的中点,如果是门这样的模型,我们就不能绕中心点旋转了,不然会觉得很奇怪。但是默认的静态网格体中心点都在物体中心,那我们怎么办?有两种方法: 1.我们就需要移动物体的中心点 2.在三维建模软件中移动模型中心点 下面我们就讨论

    2023年04月08日
    浏览(62)
  • uniapp小程序地图设置中心点位置向上偏移

    图示: id=\\\"map\\\" ref=\\\"map\\\"

    2024年02月11日
    浏览(61)
  • WPF中有中心点的slider滑动条

    想要实现的效果 原生滑动条 需要认识一下滑动条的组成 在原生控件中生成“资源字典”对应的样式 然后在track所在的列进行添砖加瓦 由于track在row=\\\"1\\\"的位置,只需要在这个位置上面添加一个Ellipse和Line Ellipse是来描述固定在滑动条上的中心点的位置 line是来描述Thumb从中心点

    2024年02月08日
    浏览(49)
  • vue canvas拖拽,鼠标中心点缩放,标记点位等

    vue实现canvas画布建立图片,坐标建立,可进行拖拽,鼠标中心点位缩放,标记点位等功能 直接上源码 仅供学习使用

    2024年02月17日
    浏览(49)
  • 高德API JS 高德地图获取多个坐标点的中心点

    我需要: 在地图上展示多个地点 地图缩放到合适的大小,要求刚好能显示全部点位 边缘留有一部分间隔。 做成如图所示这样。 经过一下午的研究,弄出来了。 需要以下这些 AMap 的类库: AMap.Bounds() 区域 AMap.LngLat() 点坐标(基础点位) AMap.setBounds() 设置地图区域,这会自动

    2024年02月07日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包