从零开始使用Surya-OCR——检测后的精细化处理框1:降噪二值图下的空白检测框删除

news2025/1/13 3:14:54

目录

一、动机

二、降噪二值化处理

        1.一般二值化处理

        2.降噪二值化处理

三、图片区域空白框判断

        1.计算区域黑色像素比重

        2.设置阈值筛选空白区域

        3.可视化检查结果


一、动机

        在使用 Surya 检测文本框时,对于一些特殊的文本,尤其是中文的古籍等,存在检测不准确的问题。常常会出现一些意料之外的错误——如漏检、误检、框压线等。本文聚焦于处理在文本检测框任务中出现的空白区域框检测的剔除问题——(空白区域即将背景视为文本的框)

二、彩色图降噪二值化处理为黑白图

        想要剔除这些错误识别背景色的文本框,一种可行的办法是通过判断当前框内的黑白色构成(因为文本是黑色而背景可以转为白色)这种筛选方式就需要将初始的彩色图片转为二值黑白图片。用 OpenCV 或者 PIL 自带的库可以实现这一功能,但是简单实用操作后的图片存在很大的噪声模糊。

        1.一般二值化处理

        下面先给出一般的二值化操作。

from PIL import Image
# 彩色原图位置
image_path = ''
# 二值图结果输出位置
binary_path = ''
##########以上根据实际情况修改###########

image = Image.open(image_path)
# 读取转为灰度图
gray_img = image.convert('L')
# 设置阈值转为黑(0)白(255)
binary_img = gray_img.point(lambda x: 255 if x > 127 else 0)
binary_img.save(binary_path)

        上述简单操作的效果图如下。可以看到转化图片中有很大的噪点影响。此时可以通过调整代码倒数第二行的阈值来改善效果,但十分麻烦,此处我们使用一种使用动态阈值和高斯模糊的降噪处理的二值化图。

        2.降噪二值化处理

import cv2
import numpy as np

# 彩色原图位置
imagedir = ''
# 降噪二值图保存位置
denoisedir = ''
# 可调节超参数:降噪强度
area_threshold = 5
##########以上根据实际情况修改###########

denoise_img = cv2.imread(imagedir, cv2.IMREAD_GRAYSCALE)
_,binary = cv2.threshold(denoise_img, 100, 255, cv2.THRESH_BINARY_INV)
img_array = np.asarray(binary)
Denoise().maxArea(img_array, area_threshold=5)
img_max = img_array.astype(np.uint8)
final_img = 255 - img_max
cv2.imwrite(denoisedir, final_img)

class Denoise:
    def maxArea(self, img, area_threshold):
        self.maxsum = 0
        row, col = img.shape
        total_pixels = row * col
        img1 = np.zeros((row, col), dtype=int)
        directions = [(-1, 0), (1, 0), (0, -1), (0, 1)] 
        for i in range(row):
            for j in range(col):
                if img[i, j] >= 50 and img1[i, j] == 0:
                    area = 0
                    stack = [(i, j)]
                    points = []
                    while stack:
                        x, y = stack.pop()
                        if img1[x, y] == 2:
                            continue
                        img1[x, y] 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

国产AI算力训练大模型技术实践

ChatGPT引领AI大模型热潮,国内外模型如雨后春笋,掀起新一轮科技浪潮。然而,国内大模型研发推广亦面临不小挑战。面对机遇与挑战,我们需保持清醒,持续推进技术创新与应用落地。 为应对挑战,我们需从战略高度…

Program-of-Thoughts(PoT):结合Python工具和CoT提升大语言模型数学推理能力

Program of Thoughts Prompting:Disentangling Computation from Reasoning for Numerical Reasoning Tasks github:https://github.com/wenhuchen/Program-of-Thoughts 一、动机 数学运算和金融方面都涉及算术推理。先前方法采用监督训练的形式,但这…

【git1】指令,commit,免密

文章目录 1.常用指令:git branch查看本地分支, -r查看远程分支, -a查看本地和远程,-v查看各分支最后一次提交, -D删除分支2.commit规范:git commit进入vi界面(进入前要git config core.editor vim设一下vi模…

《王者荣耀》国际服全球上线《Honor of Kings》海外下载榜首

原标题:《Honor of Kings》全球上线,国际玩家见证中国游戏魅力 易采游戏网6月23日独家消息:《王者荣耀》国际服《Honor of Kings》正式在全球160多个国家和地区上线,标志着这款源自中国的热门手机游戏迈向了国际舞台。尤其在加拿大…

Java面试八股之JVM永久代会发生垃圾回收吗

JVM永久代会发生垃圾回收吗 JVM的永久代(PermGen)在Java 8之前是存在的一部分,主要用于存储类的元数据、常量池、静态变量等。在这些版本中,永久代确实会发生垃圾回收,尤其是在永久代空间不足或超过某个阈值时&#x…

我在高职教STM32——LCD液晶显示(3)

大家好,我是老耿,高职青椒一枚,一直从事单片机、嵌入式、物联网等课程的教学。对于高职的学生层次,同行应该都懂的,老师在课堂上教学几乎是没什么成就感的。正因如此,才有了借助 CSDN 平台寻求认同感和成就…

【Linux详解】冯诺依曼架构 | 操作系统设计 | 斯坦福经典项目Pintos

目录 一. 冯诺依曼体系结构 (Von Neumann Architecture) 注意事项 存储器的意义:缓冲 数据流动示例 二. 操作系统 (Operating System) 操作系统的概念 操作系统的定位与目的 操作系统的管理 系统调用和库函数 操作系统的管理: sum 三. 系统调…

数据类型 运算符

基本数据类型与引用数据类型的区分 存储内容: 基本数据类型:直接存储实际的数据值,如整数、浮点数、字符等。引用数据类型:存储对象的引用(内存地址),而不是对象本身。 内存分配: 基…

Qt——系统

目录 概述 事件 鼠标事件 进入、离开事件 按下事件 释放事件 双击事件 移动事件 滚轮事件 按键事件 单个按键 组合按键 定时器 QTimerEvent QTimer 窗口事件 文件 输入输出设备 文件读写类 文件和目录信息类 多线程 常用API 线程安全 互斥锁 条件变量…

matplotlib之常见图像种类

Matplotlib 是一个用于绘制图表和数据可视化的 Python 库。它支持多种不同类型的图形,以满足各种数据可视化需求。以下是一些 Matplotlib 支持的主要图形种类: 折线图(Line Plot): 用于显示数据随时间或其他连续变量的…

珈和科技和比昂科技达成战略合作,共创智慧农业领域新篇章

6月14日,四川省水稻、茶叶病虫害监测预警与绿色防控培训班在成都蒲江举办。本次培训班由四川省农业农村厅植物保护站主办,蒲江县农业农村局、成都比昂科技筹办。四川省农业农村厅植物保护站及四川省14个市州36个县植保站负责人进行了观摩学习。 武汉珈…

Python中的性能分析和优化

在前几篇文章中,我们探讨了Python中的异步编程和并发编程,以及如何结合使用这些技术来提升程序性能。今天,我们将深入探讨如何分析以及优化Python代码的性能,确保应用程序的高效运行! 性能分析的基本工具和方法 在进…

[系统运维|Xshell]宿主机无法连接上NAT网络下的虚拟机进行维护?主机ping不通NAT网络下的虚拟机,虚拟机ping的通主机!解决办法

遇到的问题:主机ping不通NAT网络下的虚拟机,虚拟机ping的通主机 服务器:Linux(虚拟机) 主机PC:Windows 虚拟机:vb,vm测试过没问题,vnc没测试不清楚 虚拟机网络&#xff1…

cve-2015-3306-proftpd-vulfocus

1.原理 proftp是用于搭建基于ftp协议的应用软件 ProFTPD是ProFTPD团队的一套开源的FTP服务器软件。该软件具有可配置性强、安全、稳定等特点。 ProFTPD 1.3.5中的mod_copy模块允许远程攻击者通过站点cpfr和site cpto命令读取和写入任意文件。任何未经身份验证的客户端都可以…

牛客周赛Round48

第一题 A-小红的整数自增 链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网 小红拿到了三个正整数。她准备进行若干次操作,每次操作选择一个元素加1。小红希望最终三个数相等,请你帮小红求出最小的操作次数。 思路&#x…

Spring Boot + WebSocket 实现 IM 即时通讯

文章目录 1. 项目环境准备2. 配置WebSocket3. 创建消息处理器4. 创建消息类5. 创建前端页面6. 启动应用并测试7. 分析与扩展结论 🎉欢迎来到SpringBoot框架学习专栏~ ☆* o(≧▽≦)o *☆嗨~我是IT陈寒🍹✨博客主页:IT陈寒的博客🎈…

优选算法刷题笔记 2024.6.10-24.6.20

一、双指针算法(快慢指针,对撞指针) 艹&#xff0c;CSDN吞了我是十三题笔记&#xff01;&#xff01;&#xff01; 二、滑动窗口(滑动窗口) 1、找到字符串中所有字母异位词 class Solution {public List<Integer> findAnagrams(String s, String p) {int[] hash1 new in…

示例:WPF中应用DependencyPropertyDescriptor监视依赖属性值的改变

一、目的&#xff1a;开发过程中&#xff0c;经常碰到使用别人的控件时有些属性改变没有对应的事件抛出&#xff0c;从而无法做处理。比如TextBlock当修改了IsEnabled属性我们可以用IsEnabledChanged事件去做对应的逻辑处理&#xff0c;那么如果有类似Background属性改变我想找…

Kimichat使用案例026:AI翻译英语PDF文档的3种方法

文章目录 一、介绍二、腾讯交互翻译TranSmart https://transmart.qq.com/三、沉浸式翻译三、谷歌网页翻译一、介绍 短的文章,直接丢进kimichat、ChatGPT里面很快就可以翻译完成,而且效果很佳。但是,很长的PDF文档整篇需要翻译,怎么办呢? 二、腾讯交互翻译TranSmart https…

Kafka中的数据本身就是倾斜的,使用FlinkSQL该如何处理

又是经历了一段不太平的变动&#xff0c;最近算是稳定了点&#xff0c;工作内容又从后端开发转换成了sql boy&#xff0c;又要开始搞大数据这一套了。不同的是之前写实时任务的时候都是用的java代码&#xff0c;新环境却更加偏向与使用flink sql 解决&#xff0c;所以记录下使用…