重庆市网站建设网店美工考试题目

pingmian/2025/10/10 22:28:10/文章来源:
重庆市网站建设,网店美工考试题目,湖北省建设厅的网站,钱包网站建设pdf文本分为两种#xff0c;一种是标准的pdf格式的文本#xff0c;这种无需利用ocr识别#xff0c;另外一种就是图片文本#xff0c;这种需要进行ocr的识别。 OCR 识别文本和文本区域 ppstructure是paddleocr里面的一个子库#xff0c;可以识别文档的页眉页脚、正文、标…pdf文本分为两种一种是标准的pdf格式的文本这种无需利用ocr识别另外一种就是图片文本这种需要进行ocr的识别。 OCR 识别文本和文本区域 ppstructure是paddleocr里面的一个子库可以识别文档的页眉页脚、正文、标题等等。输出是json格式的数据里面有文本type、文本内容、文本块区域bbox和每一行的文本区域text_region等信息。 版面恢复 agument-xy-cut 一个实现 code 其实这一步针对的是比较复杂的排版比如表格类型的。 一般的论文什么的排版都比较固定单栏横版和双栏横版基本上一句 sorted_boxes sorted(res, keylambda x: (x[bbox][1], x[bbox][0]))就可以解决了。一般的文本用不上 agument-xy-cut。我用 agument-xy-cut 来排版属于是杀鸡用了牛刀。 虽然ppstructure识别出来的文本块是无序的但是它给出了文本块区域bbox和每一行的文本区域text_region等信息我们可以利用文本块区域bbox的信息来对文本块排序。 agument-xy-cut就是一种很好的算法。可以识别单栏、双栏、表格甚至更复杂的排版。 如果是一般的单栏横版的文章我们可以跳过这一步因为直接利用每一行的文本区域text_region进行下一步即可。 整合自然段 主要是整合自然段因为ppstructure识别出来的文本有两个层次第一层次是文本块区域以bbox划分利用上面的 agument-xy-cut算法可以进行排序。还有文本块区域内部的每一行的文本这里我们要做的是将每一行的文本整合为自然段。 这里提供一种算法code 不是特别精确不过大概是能利用每一行的文本区域text_region对文本进行自然段的整合。 # 合并段落-横排-自然段from .merge_line import MergeLineclass MergePara(MergeLine):def __init__(self):super().__init__()self.tbpuName 多行-自然段self.mllhLine 1.8 # 最大段间距def isSameColumn(self, A, B): # 两个文块属于同一栏时返回 True# 获取A、B行高if lineHeight in A: # 已记录Ah A[lineHeight]else: # 未记录则写入记录Ah A[lineHeight] A[box][3][1] - A[box][0][1]A[lineCount] 1 # 段落的行数Bh B[box][3][1] - B[box][0][1]if abs(Bh - Ah) Ah * self.mllhH:return False # AB行高不符# 行高相符判断垂直投影是否重叠ax1, ax2 A[box][0][0], A[box][1][0]bx1, bx2 B[box][0][0], B[box][1][0]if ax2 bx1 or ax1 bx2:return Falsereturn True # AB垂直投影重叠def isSamePara(self, A, B): # 两个文块属于同一段落时返回 Trueah A[lineHeight]# 判断垂直距离ly ah * self.mllhYlLine ah * self.mllhLinea, b A[box], B[box]ay, by a[3][1], b[0][1]if by ay - ly or by ay lLine:return False # 垂直距离过大# 判断水平距离lx ah * self.mllhXax, bx a[0][0], b[0][0]if A[lineCount] 1: # 首行允许缩进2格return ax - ah * 2.5 - lx bx ax lxelse:return abs(ax - bx) lxdef merge2line(self, textBlocks, i1, i2): # 合并2行ranges [(0x4E00, 0x9FFF), # 汉字(0x3040, 0x30FF), # 日文(0xAC00, 0xD7AF), # 韩文(0xFF01, 0xFF5E), # 全角字符]# 判断两端文字的结尾和开头是否属于汉藏语族# 汉藏语族行间无需分割符。印欧语族则两行之间需加空格。separator ta, tb textBlocks[i1][text][-1], textBlocks[i2][text][0]fa, fb False, Falsefor l, r in ranges:if l ord(ta) r:fa Trueif l ord(tb) r:fb Trueif fa and fb:separator # print(f【{ta}】与【{tb}】是汉字集。)# else:# print(f【{ta}】与【{tb}】是西文集。)self.merge2tb(textBlocks, i1, i2, separator)textBlocks[i1][lineCount] 1 # 行数1def mergePara(self, textBlocks):# 单行合并hList self.mergeLine(textBlocks)# 按左上角y排序hList.sort(keylambda tb: tb[box][0][1])# 遍历每个行寻找并合并属于同一段落的两个行listlen len(hList)resList []for i1 in range(listlen):tb1 hList[i1]if not tb1:continuenum 1 # 合并个数# 遍历后续文块for i2 in range(i1 1, listlen):tb2 hList[i2]if not tb2:continue# 符合同一栏if self.isSameColumn(tb1, tb2):# 符合同一段合并两行if self.isSamePara(tb1, tb2):self.merge2line(hList, i1, i2)num 1# 同栏、不同段说明到了下一段则退出内循环else:breakif num 1:tb1[score] / num # 平均置信度resList.append(tb1) # 装填入结果return resListdef run(self, textBlocks, imgInfo):# 段落合并resList self.mergePara(textBlocks)# 返回新文块列表return resList# 合并单行-横排from .tbpu import Tbpufrom functools import cmp_to_keyclass MergeLine(Tbpu):def __init__(self):self.tbpuName 单行-横排# merge line limit multiple X/Y/H单行合并时的水平/垂直/行高阈值系数为行高的倍数self.mllhX 2self.mllhY 0.5self.mllhH 0.5def isSameLine(self, A, B): # 两个文块属于同一行时返回 TrueAx, Ay A[1][0], A[1][1] # 块A右上角xyAh A[3][1] - A[0][1] # 块A行高Bx, By B[0][0], B[0][1] # 块B左上角xyBh B[3][1] - B[0][1] # 块B行高lx Ah * self.mllhX # 水平、垂直、行高 合并阈值ly Ah * self.mllhYlh Ah * self.mllhHif abs(Bx - Ax) lx and abs(By - Ay) ly and abs(Bh - Ah) lh:return Truereturn Falsedef merge2tb(self, textBlocks, i1, i2, separator): # 合并2个tb将i2合并到i1中。tb1 textBlocks[i1]tb2 textBlocks[i2]b1 tb1[box]b2 tb2[box]# 合并两个文块boxyTop min(b1[0][1], b1[1][1], b2[0][1], b2[1][1])yBottom max(b1[2][1], b1[3][1], b2[2][1], b2[3][1])xLeft min(b1[0][0], b1[3][0], b2[0][0], b2[3][0])xRight max(b1[1][0], b1[2][0], b2[1][0], b2[2][0])b1[0][1] b1[1][1] yTop # y上b1[2][1] b1[3][1] yBottom # y下b1[0][0] b1[3][0] xLeft # x左b1[1][0] b1[2][0] xRight # x右# 合并内容tb1[score] tb2[score] # 合并置信度tb1[text] tb1[text] separator tb2[text] # 合并文本textBlocks[i2] None # 置为空标记删除def mergeLine(self, textBlocks): # 单行合并# 所有文块按左上角点的x坐标排序textBlocks.sort(keylambda tb: tb[box][0][0])# 遍历每个文块寻找后续文块中与它接壤、且行高一致的项合并两个文块resList []listlen len(textBlocks)for i1 in range(listlen):tb1 textBlocks[i1]if not tb1:continueb1 tb1[box]num 1 # 合并个数# 遍历后续文块for i2 in range(i1 1, listlen):tb2 textBlocks[i2]if not tb2:continueb2 tb2[box]# 符合同一行则合并if self.isSameLine(b1, b2):# 合并两个文块boxself.merge2tb(textBlocks, i1, i2, )num 1if num 1:tb1[score] / num # 平均置信度resList.append(tb1) # 装填入结果return resListdef sortLines(self, resList): # 对文块排序从上到下从左到右def sortKey(A, B):# 先比较两个文块的水平投影是否重叠ay1, ay2 A[box][0][1], A[box][3][1]by1, by2 B[box][0][1], B[box][3][1]# 不重叠则按左上角y排序if ay2 by1 or ay1 by2:return 0 if ay1 by1 else (-1 if ay1 by1 else 1)# 重叠则按左上角x排序ax, bx A[box][0][0], B[box][0][0]return 0 if ax bx else (-1 if ax bx else 1)resList.sort(keycmp_to_key(sortKey))def run(self, textBlocks, imgInfo):# 单行合并resList self.mergeLine(textBlocks)# 结果排序self.sortLines(resList)# 返回新文块列表return resList这里的 key 需要自己手动更改‘box’、‘score’分别对应的是paddleocr识别出来的’text_region’、‘confidence’。 其实paddleocr里面应该也有对应的算法here这里面也是根据文本块区域bbox进行的排序先y后x也挺合适的。不过没有整合自然段的功能。就是粗暴的把文本块区域都弄在一起了。 总结 步骤就是这样先ocr识别文本和区域后面根据区域进行版面恢复。版面恢复部分根据自己的需要可以省略。 PS突然有个问题我发现wpspython-word处理的应该也还行段落什么的也都分的很好表格也识别对了。之前是觉得wps对生僻字识别的不好所以没用而且wps要钱hh。不过工程上的方法就是很多只有达到效果就行科研就不行都是精益求精的。

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

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

相关文章

北京网站建设排行榜服务号网站建设

在图像悬停时,我想放大图像并显示带有透明背景的div.这是我的代码.在下面的示例中,当我将鼠标悬停在.Image类中的图像上时,我想要缩放它,并希望在div的中心显示类.mylink的链接.我能够放大悬停但是当我为.text添加样式时,它不再放大图像.HTML:linkCSS:#B…

网站主机名是什么吉安网站建设jajjjc

目录 一、wakeup绕过 二、引用 三、session反序列化漏洞 3.1 php方式存取session格式 3.2 php_serialize方式存取session格式 3.3 php_binary方式存取session格式 3.4 代码演示 3.5 session例题获取flag 四、phar反序列化漏洞 4.1 phar常识 4.2 代码演示 4.3 phar例…

自己做网站需要填税表吗wpf算是网站开发吗

文章目录 1. 创建数据集文件结构数据集标注脚本分割数据集转换数据格式 2. 配置文件2.1 数据集配置2.2 选择需要的模型 3. 模型训练4. 测试 1. 创建数据集 环境: Ultralytics YOLOv8.0.230 🚀 Python-3.8.18 torch-2.3.0.dev20231226cu118 CUDA:0 (NVIDI…

做淘客一定要建网站吗免费的视频网站如何赚钱

多元正态均值检验 一、去年卖出的一岁牛犊的平均身高为 51 英寸,平均背脂厚度是 0.3 英寸,平均肩高是 56 英寸。已知今年卖出的 76 头一岁牛犊的 3 项平均指标为(50, 0.2, 54)‘,样本协差阵及其逆矩阵为 S [ 3.00 − 0.053 2.97 − 0.053 0…

网站黏度沈阳网站企业

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计,课程设计参考与学习用途。仅供学习参考, 不得用于商业或者非法用途,否则,一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

建设项目试运行备案申请网站茂民网站建设

通用属性 属性描述android:id用于为视图指定唯一的标识符。android:layout_width用于指定视图的宽度。android:layout_height用于指定视图的高度。android:layout_margin用于指定视图周围的空白区域。android:layout_padding用于指定视图内部的填充区域。android:background用…

如何设计服装网站首页昆明做网站的旅行社

拓展阅读 Devops-01-devops 是什么? Devops-02-Jpom 简而轻的低侵入式在线构建、自动部署、日常运维、项目监控软件 代码质量管理 SonarQube-01-入门介绍 项目管理平台-01-jira 入门介绍 缺陷跟踪管理系统,为针对缺陷管理、任务追踪和项目管理的商业…

做网站推广好吗中核二三公司最新招聘

开篇语大概是去年就想做这个事情了,奈何当时卡到一个docker命令找不到的问题上,导致文章难产了,墨迹了这么久,终于又有空来捣鼓它了。目的我们要实现的目的是我本地不断提交代码(CI),然后服务器不断进行部署(CD)的一个简单流程。准…

广州建网站自助建站系统军事最新军事新闻视频

sock_stream 是有保障的(即能保证数据正确传送到对方)面向连接的SOCKET,多用于资料(如文件)传送。 sock_dgram 是无保障的面向消息的socket , 主要用于在网络上发广播信息。 SOCK_STREAM是基于TCP的,数据传输比较有保障。SOCK_DGRAM是基于U…

做救助流浪动物网站的产生背景福州seo结算

Vue.js初学者和前端开发人员使用,网课、培训机构与大中专院校的教学用书 作者简介 张益珲 美国亚利桑那州立大学计算机工程技术硕士,架构师,从业近10年,多年大前端开发经验,曾就职于知名上市公司,主导开发…

找兼职做网站建设池州做网站培训

标头 darshan-parser 输出的开头显示了有关作业的总体信息的摘要。还可以使用–perf、–file或–total命令行选项生成其他作业级别摘要信息。 darshan log version:Darshan 日志文件的内部版本号。compression method:压缩方法。exe:生成日志…

微网站开发程序用wordpress

大家都知道,slow query系统做的好不好,直接决定了解决slow query的效率问题 一个数据库管理平台,拥有一个好的slow query系统,基本上就拥有了解锁性能问题的钥匙 但是今天主要分享的并不是平台,而是在平台中看到的奇…

mip网站怎么做匹配dw网站制作的一般流程

前言 最近在研究程序随系统启动,发现在 win7 上因为权限的问题,写注册表的时候总是会出现问题,写不进去导致的不能自动启动,随后决定仔细的看一看这方面的问题。 查资料过程中主要发现有三种方式可以添加到启动,分别…

天津 网站备案无锡网站建设服务公司

1. 隐马尔可夫模型 机器学习最重要的任务是根据已观察到的证据(例如训练样本)对感兴趣的未知变量(例如类别标 记)进行估计和推测。概率模型(probabilistic model)提供了一种描述框架,将描述任…

用thinksns做的网站遵义酷虎网站开发

Linux上创建一个LVM卷组,将多个物理卷添加到卷组中使用 目录1.列出当前系统中所有的块设备信息,包括磁盘、分区、逻辑卷等2.对磁盘进行分区操作3.创建了一个名为 vg_data 的卷组4.将物理卷添加到已经存在的卷组5.在卷组中创建一个逻辑卷6.查看已创建的 L…

上海专业网站建站青岛手机网站建设电话

CCIE-LAB-第四篇-OSPFv2+SHA384+BFD 实际中,思科只会给你5个小时去做下面的全部配置 这个是CCIE-LAB的拓扑图 问题 本次修改设备为sw101.sw102.sw201.sw202 问题描述 1:启动OSPFv2,保证邻居关系 2.保障认证和完整性,在冗余连接上. DC和HQ要保证OSPF的源数据,

网站更新中上海成品网站

源 | 青塔学术、量子位等颠覆科学出版的“游戏规则”?10月20日,国际著名生物学综合期刊eLife官方宣布了一个重大决定:从2023年1月31日起,所有经过同行评审的文章,eLife都不会作出接受/拒绝的决定,而是直接发布在其网站…

响应式网站建设有哪些好处猎头公司logo

21【算法题】反转链表 题目: 给定单链表的头节点 head ,请反转链表,并返回反转后的链表的头节点。 示例 1: 输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1]示例 2: 输入:head = [1,2] 输出:[2,1]示例 3: 输入:head = [] 输出:[]提示: 链表中节点的数目范围是 [0, 5…

重庆永川微网站建设为什么说新浪的门户网站做的好

预读技术是微软vista和windows7默认开启的程序,原意是增加程序运行和开机速度,但事与愿违,该技术已经变成与UAC几乎一样的垃圾,普通用户建议关闭,原因有:1、程序本身额外增加系统负担,启用就多运…

网页设计跟网站建设qq可以上网

1、id选择器可以为标有特定id的html元素指定特定的样式。 2、选择器以#开头,后跟某id的属性值。 3、class选择器用于描述一组元素的样式,class可以在多个元素使用。 4、类选择器用.选择。 5、指定特定的元素使用class。 6、元素的多个类用空格分开&…