深圳网站建设seo优化/seo优化工具

深圳网站建设seo优化,seo优化工具,公司网站实名认证,可以做公司宣传的网站有哪些内容我们在做PDF文档解析时有时需要解析PDF文档中的表格、形状等数据。跟解析文本类似的常见的解决方案也是两种。文档解析跟ocr技术处理。下面我们来看看使用文档解析的方案来做PDF文档中的表格、图形解析(使用pdfium库)。 表格解析: 在pdfium库…

我们在做PDF文档解析时有时需要解析PDF文档中的表格、形状等数据。跟解析文本类似的常见的解决方案也是两种。文档解析跟ocr技术处理。下面我们来看看使用文档解析的方案来做PDF文档中的表格、图形解析(使用pdfium库)。
表格解析:
在pdfium库中在解析表格时是将表格的线解析成单独的对象。所以我们在解析时只需要遍历页面中的所有线条,拿到线条之后再进行表格结构的重新组装即可。
以下为读取页面中线的相关代码:

std::string strPdfPath = "pdf.pdf";
//初始化库
FPDF_InitLibrary();
//加载文档
FPDF_DOCUMENT document = FPDF_LoadDocument(strPdfPath.c_str(), nullptr);
if (!document)
{//load error
}
//获取页数
int page_count = FPDF_GetPageCount(document);
//此处我们只演示处理第一页
FPDF_PAGE page = FPDF_LoadPage(document, 0); // 加载第一页 (索引 0)
if (page)
{int objCount = FPDFPage_CountObjects(page); //获取当前页的对象数for (int i = 0; i < objCount; ++i){FPDF_PAGEOBJECT obj = FPDFPage_GetObject(page, i);int nObjType = FPDFPageObj_GetType(obj);//对象类型switch (nObjType){case FPDF_PAGEOBJ_UNKNOWN:break;case FPDF_PAGEOBJ_PATH: {int nSegments = FPDFPath_CountSegments(obj); //std::vector<CPoint> vecPts;for (int j = 0; j < nSegments; j++){FPDF_PATHSEGMENT segment = FPDFPath_GetPathSegment(obj, j);int nSegType = FPDFPathSegment_GetType(segment);//线段类型switch (nSegType){case FPDF_SEGMENT_UNKNOWN:break;case FPDF_SEGMENT_LINETO:{float x, y;FPDFPathSegment_GetPoint(segment, &x, &y);CPoint pt(x, y);vecPts.push_back(pt);                                                   }break;case FPDF_SEGMENT_BEZIERTO:{//                        }break;case FPDF_SEGMENT_MOVETO:{float x, y;FPDFPathSegment_GetPoint(segment, &x, &y);    CPoint pt(x, y);vecPts.push_back(pt);                        }break;default:break;                   }                }            }     break;   default:break;                               }    }
}
FPDF_ClosePage(page);

通过上述代码我们获取Path对象中的数据即可拿到表格的线条,需要的注意的时如果只拿表格的线的话需要对线的数量做判断,如果对象只有两个点则为表格的线。这里拿到的线是整体的线。
在这里插入图片描述
比如上边的表格拿到的线数量为8条线段。
如果需要将线组成一个表格结构那我们需要自己做处理。大致的处理思路是将长线段打断为短线段然后再将短的线段组合成一个个的小多边形,根据多边形的上下左右共边关系生成一个表格结构。至于这里为什么要生成一个多边形,是为了后续做文本跟表格关联做准备。
根据之前文本解析文章中我们可以看到在获取文本信息时也能拿到文本的位置、大小等信息。所以我们在进行文本表格关联时只需要判断文本位置的那个点是否在表格的多边形内即可,如果在多边形内则说明PDF中该文本为表格中该单元格的数据。这样我们就可以生成一个虚拟的表格数据了。对于图片也是这样处理,拿到图片的中心点如果该点在多边形内则该图片为该表格中的数据。

形状解析:
读取代码跟读取线的代码一样,只是在读取形状时线的数量大于2。如果是圆、半圆之类的则其中一些点为贝塞尔曲线。我在测试时即使形状是线在解析时拿到的线的数量也是4个(一个闭合的多边形)。其他的形状经过测试也是一个闭合的多边形。
在这里插入图片描述
比如Word中的这些线条在解析出来后每个对象都是一些线段跟贝塞尔曲线组合成的一个闭合区域。

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

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

相关文章

ES、OAS、ERP、电子政务、企业信息化(高软35)

系列文章目录 ES、OAS、ERP、电子政务、企业信息化 文章目录 系列文章目录前言一、专家系统&#xff08;ES&#xff09;二、办公自动化系统&#xff08;OAS&#xff09;三、企业资源规划&#xff08;ERP&#xff09;四、典型信息系统架构模型1.政府信息化和电子政务2.企业信息…

存储对象(MySQL笔记第五期)

p.s.这是萌新自己自学总结的笔记&#xff0c;如果想学习得更透彻的话还是请去看大佬的讲解 目录 视图视图的检查选项视图的更新及作用 存储过程变量系统变量用户定义变量局部变量 IF判断、casewhile、pereat、loop游标(cursor)条件处理程序(handler) 存储函数触发器 -- 表结构…

Graphics View画一个可调速的风机(pyqt)

效果如图&#xff1a; 风机具备调节转速的功能&#xff0c;转速通过扇叶旋转的快慢来区别&#xff0c;共分为四档&#xff0c;其中零档为静止状态&#xff0c;而一、二、三档则依次增加转速。在代码中&#xff0c;BlowerWrapper 类包含了可旋转的扇叶、风机外框以及选项三个主要…

人工智能之数学基础:线性代数中矩阵的运算

本文重点 矩阵的运算在解决线性方程组、描述线性变换等方面发挥着至关重要的作用。通过对矩阵进行各种运算,可以简化问题、揭示问题的本质特征。在实际应用中,我们可以利用矩阵运算来处理图像变换、数据分析、电路网络等问题。深入理解和掌握矩阵的运算,对于学习线性代数以…

Java 大视界 -- Java 大数据机器学习模型的可解释性增强技术与应用(107)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…

02内存映射与bmp解码

一、mmap 内存映射 内存映射的作用是把硬件设备的地址&#xff0c;映射到应用层的内存空间&#xff0c;这样用户就可以跨越系统层访问linux的硬件设备。 1、man 2 mmap 查看映射函数接口 NAMEmmap, munmap - map or unmap files or devices into memory映射 解除…

建筑兔零基础人工智能自学记录34|深度学习与神经网络2

1、人工神经网络ANN 从生物课上学到的有关神经元、突触的生物神经网络&#xff0c;被模仿出了简化的人工神经网络&#xff08;ANN,artificial neural network&#xff09;。 ANN结构为&#xff1a;输入层、隐藏层、输出层 人工神经元&#xff1a; 基于生物神经元的数学模型 …

手机放兜里,支付宝“碰一下”被盗刷?

大家好&#xff0c;我是小悟。 近期&#xff0c;网络上关于“支付宝‘碰一下’支付易被盗刷”的传言甚嚣尘上&#xff0c;不少用户对此心生疑虑。 首先&#xff0c;要明确一点&#xff1a;“碰一下”支付并不会像某些传言中所描述的那样容易被隔空盗刷。这一观点已经得到了支付…

最新版本SpringAI接入DeepSeek大模型,并集成Mybatis

当时集成这个环境依赖冲突&#xff0c;搞了好久&#xff0c;分享一下依赖配置 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instan…

Spring Boot 流式响应豆包大模型对话能力

当Spring Boot遇见豆包大模型&#xff1a;一场流式响应的"魔法吟唱"仪式 一、前言&#xff1a;关于流式响应的奇妙比喻 想象一下你正在火锅店点单&#xff0c;如果服务员必须等所有菜品都备齐才一次性端上来&#xff0c;你可能会饿得把菜单都啃了。而流式响应就像贴…

例子 DQN + CartPole: 深入思考一下,强化学习确实是一场智能冒险之旅!

强化学习的概念 在技术人员眼里&#xff0c;深度学习、强化学习&#xff0c;或者是大模型&#xff0c;都只是一些算法。无论是简单&#xff0c;还是复杂&#xff0c;我们都是平静的看待。当商业元素日益渗透进技术领域&#xff0c;人人言必称大模型的时候。技术人该反思一下&a…

RNN实现精神分裂症患者诊断(pytorch)

RNN理论知识 RNN&#xff08;Recurrent Neural Network&#xff0c;循环神经网络&#xff09; 是一种 专门用于处理序列数据&#xff08;如时间序列、文本、语音、视频等&#xff09;的神经网络。与普通的前馈神经网络&#xff08;如 MLP、CNN&#xff09;不同&#xff0c;RNN…

Lua的table(表)

Lua表的基本概念 Lua中的表&#xff08;table&#xff09;是一种多功能数据结构&#xff0c;可以用作数组、字典、集合等。表是Lua中唯一的数据结构机制&#xff0c;其他数据结构如数组、列表、队列等都可以通过表来实现。 表的实现 Lua的表由两部分组成&#xff1a; 数组部分…

Linux-基本指令3

一.grep 语法&#xff1a; grep [选项] 搜寻字符串 ⽂件 功能&#xff1a;在⽂件中搜索字符串&#xff0c;将找到的⾏打印出来 常⽤选项&#xff1a; -i &#xff1a;忽略⼤⼩写的不同&#xff0c;所以⼤⼩写视为相同 -n &#xff1a;顺便输出⾏号 -v &#xff1a;反向选择&…

GPIO(嵌入式学习)

GPIO 通用输入输出口&#xff1a; 可分为八种输入输出模式 输出模式 下端可控制端口输出高低电平&#xff0c;用以驱动LED&#xff0c;控制蜂鸣器&#xff0c;模拟通信协议输出时序 输入模式 读取高低电平或电压&#xff0c;用与读取按键输入&#xff0c;外界模块电平信号…

【构建工具】Gradle Kotlin DSL中的大小写陷阱:BuildConfigField

在Android开发当中&#xff0c;BuildConfig是一个非常有用的功能&#xff0c;它允许我们在构建过程中定义常量&#xff0c;并在运行时使用它们。But&#xff01;&#xff01;当我们从传统的Groovy DSL迁移到Kotlin DSL时或者被Android Studio坑的时候&#xff0c;有一些细微的差…

【Uniapp-Vue3】开发userStore用户所需的相关操作

在项目根路径下创建的stores文件夹中创建user.js文件 并将以下内容复制到user.js中 import {ref} from "vue" import { defineStore } from pinia; const uniIdCo uniCloud.importObject("uni-id-co") const db uniCloud.database(); const usersTable…

Redis分布式锁的实现(Redission)

写在前面 本人在学习Redis过程中学习到分布式锁时太多困惑和疑难杂点 需要总结梳理思路 以下思路都是最简单最基本的思路 主要用到Redission工具类 会涉及到看门狗机制等 本文内容部分引自Javaguide,小林coding等热门八股 用于个人学习用途 分布式锁介绍 对于单机多线程来说…

基于Apollo对配置类的热更新优化

背景 关于配置的热更新&#xff0c;apollo 通过com.ctrip.framework.apollo.spring.annotation.SpringValueProcessor 处理带Value的方法或字段&#xff0c;通过监听变更事件&#xff0c;采用反射去更新对应的值 但这个功能仅仅用于单个属性&#xff0c;当我有一组有关联关系…

【AD】3-5 元件在原理图中的基本操作2

1.导线连接 选择放置->线&#xff08;CtrlW&#xff09;&#xff0c;或者直接点击横条处&#xff0c;建议使用直角走线 注意&#xff1a;下图中的线不具有电气连接属性&#xff0c;只是单纯的线 双击导线&#xff0c;进行设置导线粗细及颜色 2.网络标签 放置->网络标…