CN116070596A - 基于动态数据的pdf文件生成方法、装置及相关介质 - Google Patents
基于动态数据的pdf文件生成方法、装置及相关介质 Download PDFInfo
- Publication number
- CN116070596A CN116070596A CN202310320386.3A CN202310320386A CN116070596A CN 116070596 A CN116070596 A CN 116070596A CN 202310320386 A CN202310320386 A CN 202310320386A CN 116070596 A CN116070596 A CN 116070596A
- Authority
- CN
- China
- Prior art keywords
- information
- data
- file
- sub
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/151—Transformation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/82—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V30/00—Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
- G06V30/10—Character recognition
- G06V30/19—Recognition using electronic means
- G06V30/191—Design or setup of recognition systems or techniques; Extraction of features in feature space; Clustering techniques; Blind source separation
- G06V30/1918—Fusion techniques, i.e. combining data from various sources, e.g. sensor fusion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V30/00—Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
- G06V30/40—Document-oriented image-based pattern recognition
- G06V30/41—Analysis of document content
- G06V30/413—Classification of content, e.g. text, photographs or tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V30/00—Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
- G06V30/40—Document-oriented image-based pattern recognition
- G06V30/41—Analysis of document content
- G06V30/414—Extracting the geometrical structure, e.g. layout tree; Block segmentation, e.g. bounding boxes for graphics or text
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Multimedia (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Computing Systems (AREA)
- Databases & Information Systems (AREA)
- Medical Informatics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了基于动态数据的PDF文件生成方法、装置及相关介质,该方法包括:获取待生成PDF文件的动态数据及其任务ID;采用多线程异步的方式获取所述动态数据的基础信息;创建用于存储动态数据的文件树数据结构的对象;根据所述任务ID拆分并获取所述动态数据下属的所有维度数据,并为每一维度数据设定标签信息;根据所述标签信息将所有维度数据添加至所述文件树数据结构的对象中;生成关于维度数据的目录信息,并添加至所述文件树数据结构的对象;将各维度数据分别渲染为HTML文档;将所有的所述HTML文档转换生成对应的PDF文档,并将所有的PDF文档合并为最终的PDF文件。本发明不仅提高PDF文件的生成性能及效率,还能使生成的PDF文件具有目录结构。
Description
技术领域
本发明涉及计算机软件技术领域,特别涉及基于动态数据的PDF文件生成方法、装置及相关介质。
背景技术
为了生成PDF文件,现有技术通常是由前端发送的待生成页面数据,并将该页面数据存储至预设的数据库中,然后将数据库中存储的页面数据转换为对应的动态PDF文档。但是在一些业务场景下,用户需要将一些随时间变化而改变的结果信息作为任务保存成PDF文档留存或离线浏览,且保留一定的目录结构,此处所说的随时间变化而改变的结果信息即为动态数据,动态数据是指在系统应用中随时间变化而改变的数据,如库存数据等,动态数据是常常变化、直接反映事务过程的数据,比如网站访问量、在线人数、日销售额等等。而前述生成PDF文件的方式则受限于前端的机器性能、前端和后端数据交互量较大,以及在无数据拆分处理方面的性能较差等缺陷,无法达到用户所需的保存目录结构的效果,也无法将子页面的PDF有效的融合到一起。因此,如何提高PDF文件的生成性能以及满足用户的生成需求是本领域技术人员需要解决的问题。
发明内容
本发明实施例提供了一种基于动态数据的PDF文件生成方法、装置、计算机设备及存储介质,旨在提高具有目录结构的PDF文件的生成性能及效率。
第一方面,本发明实施例提供了一种基于动态数据的PDF文件生成方法,包括:
获取待生成PDF文件的动态数据及其任务ID;
采用多线程异步的方式获取所述动态数据的基础信息,并结合所述任务ID和基础信息创建PDF文件路径;
创建用于存储动态数据的文件树数据结构的对象,并根据所述基础信息为所述文件树数据结构的对象添加对象信息;
根据所述任务ID拆分并获取所述动态数据下属的所有维度数据,并为每一维度数据设定标签信息;所述标签信息包括渲染路径、数据编号和标题;
根据所述标签信息将所有维度数据添加至所述文件树数据结构的对象中,并获取每一维度数据在所述文件树数据结构的对象中的位置信息;
结合标签信息和位置信息生成关于维度数据的目录信息,并将所述目录信息添加至所述文件树数据结构的对象中;
循环遍历所述文件树数据结构的对象以获取其中的维度数据,并根据各维度数据的标签信息将各维度数据分别渲染为HTML文档;
利用PDF转换工具将所有的所述HTML文档转换生成对应的PDF文档,并根据所述标签信息将所有的PDF文档合并为最终的PDF文件,并按照所述PDF文件路径进行存储。
第二方面,本发明实施例提供了一种基于动态数据的PDF文件生成装置,包括:
动态数据获取单元,用于获取待生成PDF文件的动态数据及其任务ID;
路径创建单元,用于采用多线程异步的方式获取所述动态数据的基础信息,并结合所述任务ID和基础信息创建PDF文件路径;
文件树创建单元,用于创建用于存储动态数据的文件树数据结构的对象,并根据所述基础信息为所述文件树数据结构的对象添加对象信息;
维度数据获取单元,用于根据所述任务ID拆分并获取所述动态数据下属的所有维度数据,并为每一维度数据设定标签信息;所述标签信息包括渲染路径、数据编号和标题;
维度数据添加单元,用于根据所述标签信息将所有维度数据添加至所述文件树数据结构的对象中,并获取每一维度数据在所述文件树数据结构的对象中的位置信息;
目录信息生成单元,用于结合标签信息和位置信息生成关于维度数据的目录信息,并将所述目录信息添加至所述文件树数据结构的对象中;
维度数据渲染单元,用于循环遍历所述文件树数据结构的对象以获取其中的维度数据,并根据各维度数据的标签信息将各维度数据分别渲染为HTML文档;
合并存储单元,用于利用PDF转换工具将所有的所述HTML文档转换生成对应的PDF文档,并根据所述标签信息将所有的PDF文档合并为最终的PDF文件,并按照所述PDF文件路径进行存储。
第三方面,本发明实施例提供了一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面所述的基于动态数据的PDF文件生成方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如如第一方面所述的基于动态数据的PDF文件生成方法。
本发明实施例了一种基于动态数据的PDF文件生成方法、装置、计算机设备及存储介质,该方法将获取的动态数据进行数据拆分为多个维度数据,并依据维度数据构建得到文件树数据结构的对象,同时为该文件树数据结构的对象添加相应的目录信息,然后从该文件树数据结构的对象中遍历获取维度数据,以转换为HTML文档,随后将所有的HTML文档合并为最终的PDF文件进行存储,如此不仅提高PDF文件的生成性能及效率,还能使生成的PDF文件具有目录结构,同时也无需依赖前端数据的产生,进而改善前端与后端的交互方式。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种基于动态数据的PDF文件生成方法的流程示意图;
图2为本发明实施例提供的一种基于动态数据的PDF文件生成方法中步骤S102的流程示意图;
图3为本发明实施例提供的一种基于动态数据的PDF文件生成方法中步骤S103的流程示意图;
图4为本发明实施例提供的一种基于动态数据的PDF文件生成方法中步骤S108的流程示意图;
图5为本发明实施例提供的一种基于动态数据的PDF文件生成方法中步骤S108的另一流程示意图;
图6为本发明实施例提供的一种基于动态数据的PDF文件生成装置的示意性框图;
图7为本发明实施例提供的一种基于动态数据的PDF文件生成装置中路径创建单元的示意性框图;
图8为本发明实施例提供的一种基于动态数据的PDF文件生成装置中文件树创建单元的示意性框图;
图9为本发明实施例提供的一种基于动态数据的PDF文件生成装置中合并存储单元的示意性框图;
图10为本发明实施例提供的一种基于动态数据的PDF文件生成装置中合并存储单元的另一示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和 “包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/ 或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
下面请参见图1,图1为本发明实施例提供的一种基于动态数据的PDF文件生成方法,具体包括:步骤S101~S108。
S101、获取待生成PDF文件的动态数据及其任务ID;
S102、采用多线程异步的方式获取所述动态数据的基础信息,并结合所述任务ID和基础信息创建PDF文件路径;
S103、创建用于存储动态数据的文件树数据结构的对象,并根据所述基础信息为所述文件树数据结构的对象添加对象信息;
S104、根据所述任务ID拆分并获取所述动态数据下属的所有维度数据,并为每一维度数据设定标签信息;所述标签信息包括渲染路径、数据编号和标题;
S105、根据所述标签信息将所有维度数据添加至所述文件树数据结构的对象中,并获取每一维度数据在所述文件树数据结构的对象中的位置信息;
S106、结合标签信息和位置信息生成关于维度数据的目录信息,并将所述目录信息添加至所述文件树数据结构的对象中;
S107、循环遍历所述文件树数据结构的对象以获取其中的维度数据,并根据各维度数据的标签信息将各维度数据分别渲染为HTML文档;
S108、利用PDF转换工具将所有的所述HTML文档转换生成对应的PDF文档,并根据所述标签信息将所有的PDF文档合并为最终的PDF文件,并按照所述PDF文件路径进行存储。
本实施例中,对于待生成PDF文件的动态数据,即本次生成PDF文件的任务,获取其任务ID及基础信息,该基础信息可以包括任务名称、任务地址、任务日期,任务处理人等等,并创建用于存储最终生成的PDF文件的PDF文件路径。对于获取的动态数据,将其进行数据拆分,得到下属的维度数据,并为获取的维度数据设置标签信息,然后将所有的维度数据按照标签信息添加至创建的文件树数据结构的对象中,同时为该文件树数据结构的对象添加对象信息,这里的文件树数据结构为一种用来存储具有上下级关系数据结构,对象则表示在计算机内存堆中声明的变量。在这里,所述的维度数据可以理解为动态数据不同维度、不同方面的数据,所述的对象信息具体包括封面信息和概要信息等等。随后根据维度数据在文件树数据结构的对象中的位置信息并结合标签信息为文件树数据结构的对象生成目录信息,并添加其中。接着,从文件树数据结构中心中循环遍历获取维度数据,并将其渲染为HTML文档,再利用PDF文件转换工具将HTML文档转换为PDF文档,最后将各PDF文档合并为PDF文件。
本实施例将获取的动态数据进行数据拆分为多个维度数据,并依据维度数据构建得到文件树数据结构的对象,同时为该文件树数据结构的对象添加相应的目录信息,然后从该文件树数据结构的对象中遍历获取维度数据,以转换为HTML文档,随后将所有的HTML文档合并为最终的PDF文件进行存储,如此不仅提高PDF文件的生成性能及效率,还能使生成的PDF文件具有目录结构,同时也无需依赖前端数据的产生,进而改善前端与后端的交互方式。
在一实施例中,如图2所示,所述步骤S102包括:步骤S201~S205。
S201、创建线程池,并初始化线程池中所有线程;
S202、当存在待获取的动态数据的基础信息时,判断所述线程池中是否存在空闲线程;
S203、若存在空闲线程,则选取所述空闲线程并对动态数据的基础信息进行获取;若未存在空闲线程,则将所述动态数据的基础信息放入预置的阻塞队列中,并当所述线程池中存在空闲线程时,利用所述空闲线程从所述阻塞队列中获取所述动态数据的基础信息;
S204、将所述任务ID设置为文件名,并根据所述文件名判断是否存在相同文件;
S205、若存在相同文件,则利用所述基础信息对所述文件名进行调整;若未存在相同文件,则根据所述基础信息在所述文件名下创建多个子文件。
本实施例中,当通过多线程异步获取基础信息时,首先创建线程池并对其中的线程进行初始化,接着选取处于空闲状态的线程来获取基础信息。若线程池中未存在空闲线程,那么可以将基础信息暂存于预置的阻塞队列中,并当存在空闲线程时从该阻塞队列中获取基础信息。对于获取到的基础信息,可以与任务ID一并用于创建PDF文件路径。另外,若在第一预设时间阈值内仍未存在空闲线程时,则可以在线程池中新建线程,以及时获取基础信息;进一步的,若线程池中的线程数量达到最大值,则可以另建一线程池,并通过新建线程池中的线程执行任务。
在一实施例中,如图3所示,所述步骤S103包括:步骤S301~S306。
S301、结合所述基础信息获取所述动态数据中的父元素和子元素;
S302、构建一阵列,并将所述父元素作为阵列key值写入,以及将子元素作为阵列value值写入;
S303、创建一词典,并在所述词典中为相同的父元素建立父元素群组,以及为相同的子元素建立子元素群组;
S304、遍历所述阵列,并将所述阵列中的父元素作为key值写入至字典中,以及将所述阵列中的子元素作为value值写入至字典中;
S305、按照所述父元素群组和子元素群组对所述字典中的父元素和子元素进行位置调整,以此构建所述文件树数据结构的对象;
S306、利用所述任务ID和基础信息为所述文件树数据结构的对象添加封面信息和概要信息。
本实施例中,通过建立阵列sort array List()和字典dictionary()实现文件树数据结构的对象的创建,具体来说,首先将获取的父元素和子元素分别作为key值和value值写入至建立的阵列中,接着将阵列中的父元素和子元素分别作为key值和value值写入至建立的字典中。由于树状结构是可以无限制层数的扩展组织,所有在组织内的资料都是此树状结构的一个"元素",不管是横向还是纵向都可以无限制的扩展,而其中的横向扩展则需要通过建立群组来实现,例如以根目录下的第一层中的所有元素都可以视为同一群组;而在进行纵向扩展时,则需要通过建立层数来实现,即每往下扩展一个元素,就是往下扩展一层,而所扩展出来的元素必须是与上面的横向群组中的一个元素互相关联。另外,当需要对文件树数据结构的对象进行维护更新时,便可以通过对字典执行相应的操作来达到维护更新的效果,例如查找到字典dictionary()中的key值内的value,并确认需要新增、修改或者删除的元素,然后直接使用dictionary()中的ADD或DELET方法进行操作即可。
在一实施例中,所述步骤S106包括:
遍历所有的维度数据,以判断各维度数据是否包含有子维度数据;
若包含有子维度数据,则为所述子维度数据设定子标签信息,并根据所述子标签信息将所述子维度数据添加至所述文件树数据结构的对象中,然后获取每一子维度数据在所述文件树数据结构的对象中的子位置信息;
结合所述标签信息、位置信息、子标签信息和子位置信息为所述动态数据生成目录信息,并将所述目录信息添加至所述文件树数据结构的对象中。
本实施例中,为了保证目录信息的完整性和细粒度,对由数据拆分得到的维度数据进一步拆分,以得到维度数据下属的子维度数据,从而结合维度数据和子维度数据对应的各项信息(即标签信息、位置信息、子标签信息和子位置信等)生成相应的目录信息。
在一实施例中,所述步骤S107包括:
将所有的所述维度数据分别转换为json格式数组,并使所述json格式数组与所述标签信息一一对应;
将对应有标签信息的所述json格式数组解析为元素,并将所述元素作为结果节点插入至渲染树中,以渲染得到所述HTML文档。
本实施例首先采用json格式数组的形式来表示维度数据,并对于其设置标签,同时将json格式数组解析为element 元素,然后依据标签将各元素作为节点插入至渲染树(Render tree)中。
在具体应用场景中,可以预先构建所述的渲染树,构建过程包括:
从 DOM(Document Object Model,文档对象模型)树的根节点开始,遍历每个可见节点;在遍历过程中存在某些节点完全不可见(例如script标签、meta标签等),这是因为它们不会在渲染结果中反映,所以可以将其忽略;还有一些节点通过CSS(层叠样式表)隐藏,因此在渲染树中也会被忽略。比方说,有一个span节点,因为该节点有一条显式规则设置了display:none 属性,所以不会出现在渲染树中;
为每个可见节点找到相应匹配的 CSSOM 规则,并应用这些规则;
发射可见节点,连带其内容及计算的样式。
在一实施例中,如图4所示,所述步骤S108包括:步骤S401~S407。
S401、针对每一所述PDF文档,获取对应的文档图像;
S402、对所述文档图像进行扫描,判断所述文档图像是否包含表格信息;所述表格信息包括无线表格和跨页表格,所述跨页表格包括前一分表格和后一分表格;
S403、当所述文档图像中包含无线表格时,提取所述无线表格所在的第一区域,并对所述第一区域提取边缘信息,以获取所述无线表格的界限坐标信息;
S404、通过卷积神经网络识别所述第一区域中的文本信息,并结合所述界限坐标信息对所述文本信息进行过滤,以得到所述无线表格的单元格信息,然后获取相邻单元格之间的单元格坐标信息,并根据所述单元格坐标信息对各单元格进行顺序排列;
S405、当所述文档图像中包含跨页表格时,获取所述跨页表格中的前一分表格位置信息和后一分表格的位置信息;
S406、判断所述前一分表格和后一分表格是否具备表格合并条件;其中,所述表格合并条件包括位置信息是否满足合并位置要求、表格规格是否一致;
S407、若判定所述前一分表格和后一分表格的位置信息未满足合并位置要求,则以所述前一分表格的位置信息为标准对所述后一分表格位置信息进行调整;若判定所述前一分表格和后一分表格的表格规格不一致,则对所述前一分表格和后一分表格进行规格统一处理;若判定所述前一分表格和后一分表格具备表格合并条件,则将所述前一分表格和后一分表格进行合并。
由于PDF文档中可能包括表格等内容,因此为了避免在合并PDF文档过程中对其中的表格信息出现合并错误,因此本实施例首先将PDF文档处理为文档图像,并对文档图像进行扫描,以判断其中是否包含表格信息。可以理解的是,对于处于页面中间区域的有线表格来说,在合并时通常不会与其发生关联,但如果是无线表格的话,则有可能因为未能识别是表格信息而将其按照文字内容进行处理,又或者是跨页表格的话,则在合并过程中可能由于表头、表格位置等因素而对合并后的跨页表格造成影响。
对于无线表格来说,提取其所在区域的边缘信息,进而获取到对应的界限坐标信息,接着通过卷积神经网络对无线表格所在区域进行文字识别,对于识别到的文本信息,进行过滤筛选,如此可确认无线表格中各单元格内的文本信息。同时,结合单元格坐标信息可以对各单元格进行排列,从而完整提取得到无限表格。
在具体实施例中,可以首先采用双阈值法对第一区域进行边缘提取,接着将经过边缘提取的第一区域中的边缘连接为轮廓,并在到达轮廓端点时,基于8邻域点方法获取满足低阈值的目标点;随后根据目标点收集其余边缘,直至第一区域的边缘闭合,以此得到第一区域的边缘信息。在另一具体实施例中,所述卷积神经网络为卷积循环神经网络,那么当通过卷积神经网络识别所述第一区域中的文本信息时,便可以利用所述的卷积循环神经网络中的卷积层对第一区域提取宽度为单个像素的特征序列,然后利用该卷积循环神经网络中的循环层对所述特征序列预测字符,并将预测结果作为所述文本信息。
在一实施例中,如图5所示,所述步骤S108还包括:步骤S501~S505。
S501、基于所述标签信息中的数据编号对各PDF文档进行排序;
S502、采用目标检测网络对排序后的PDF文档对应的文档图像进行页码识别,得到页码序列;
S503、判断所述页码序列是否符合各PDF文档的排列顺序;
S504、若判定所述页码序列符合各PDF文档的排列顺序,则对排序后的PDF文档进行合并;
S505、若判定所述页码序列不符合各PDF文档的排列顺序,则删除所有页码并根据所述标签信息中的数据编号合并PDF文档,然后对合并得到的PDF文件添加页码。
本实施例中,考虑到转换的各PDF文档会包含页码等元素,而为了使合并后的PDF文件不仅能够在内容上逻辑顺畅,也能够在页码等方面保持连贯,故在合并过程中对PDF文档的页码进行识别检测。具体来说,首先通过目标检测网络对页码进行识别,然后判断页码顺序是否正确,若正确无误则可以继续进行文档合并,若存在偏差,则需要对其进行调整。本实施例所采用的调整方式是将页码删除,然后根据各PDF文档对应的数据编号进行文档合并,再对合并的PDF文件添加正确的页码。进一步的,还可以结合目录信息对合并后的PDF文件进行检查,以提高合并精度。
在具体实施例中,采用Yolov5s模型作为目标检测网络对页码进行识别,其中包括:
利用Yolov5s模型的骨干网络backbone层对文档图像提取不同尺寸的特征图;其中,backbone层包括Focus模块、瓶颈CSP层、CBL模块和SPP层,CBL模块是指卷积层、BN层和Leaky ReLU层级联构成的模组,在骨干网络中,Focus模块首先将输入图片进行切片处理,然后通过32个卷积核生成32通道的特征图;CBL模块和瓶颈CSP层起到卷积和特征提取的作用;
利用Yolov5s模型的neck层对不同尺寸的特征图进行串联和整合,获得不同大小的语义信息;如此从而提高网络对不同大小目标物体特征和位置信息的提取能力;
通过Yolov5s模型的预测层输出文档图像的类别信息、坐标信息和置信度信息。例如预测层输出识别的内容是否为页码,页码的坐标信息,以及页码的置信度信息等等。
图6为本发明实施例提供的一种基于动态数据的PDF文件生成装置600的示意性框图,该装置600包括:
动态数据获取单元601,用于获取待生成PDF文件的动态数据及其任务ID;
路径创建单元602,用于采用多线程异步的方式获取所述动态数据的基础信息,并结合所述任务ID和基础信息创建PDF文件路径;
文件树创建单元603,用于创建用于存储动态数据的文件树数据结构的对象,并根据所述基础信息为所述文件树数据结构的对象添加对象信息;
维度数据获取单元604,用于根据所述任务ID拆分并获取所述动态数据下属的所有维度数据,并为每一维度数据设定标签信息;所述标签信息包括渲染路径、数据编号和标题;
维度数据添加单元605,用于根据所述标签信息将所有维度数据添加至所述文件树数据结构的对象中,并获取每一维度数据在所述文件树数据结构的对象中的位置信息;
目录信息生成单元606,用于结合标签信息和位置信息生成关于维度数据的目录信息,并将所述目录信息添加至所述文件树数据结构的对象中;
维度数据渲染单元607,用于循环遍历所述文件树数据结构的对象以获取其中的维度数据,并根据各维度数据的标签信息将各维度数据分别渲染为HTML文档;
合并存储单元608,用于利用PDF转换工具将所有的所述HTML文档转换生成对应的PDF文档,并根据所述标签信息将所有的PDF文档合并为最终的PDF文件,并按照所述PDF文件路径进行存储。
在一实施例中,如图7所示,所述路径创建单元602包括:
线程创建单元701,用于创建线程池,并初始化线程池中所有线程;
空闲判断单元702,用于当存在待获取的动态数据的基础信息时,判断所述线程池中是否存在空闲线程;
基础信息获取单元703,用于若存在空闲线程,则选取所述空闲线程并对动态数据的基础信息进行获取;若未存在空闲线程,则将所述动态数据的基础信息放入预置的阻塞队列中,并当所述线程池中存在空闲线程时,利用所述空闲线程从所述阻塞队列中获取所述动态数据的基础信息;
文件判断单元704,用于将所述任务ID设置为文件名,并根据所述文件名判断是否存在相同文件;
文件名调整单元705,用于若存在相同文件,则利用所述基础信息对所述文件名进行调整;若未存在相同文件,则根据所述基础信息在所述文件名下创建多个子文件。
在一实施例中,如图8所示,所述文件树创建单元603包括:
元素获取单元801,用于结合所述基础信息获取所述动态数据中的父元素和子元素;
第一写入单元802,用于构建一阵列,并将所述父元素作为阵列key值写入,以及将子元素作为阵列value值写入;
词典创建单元803,用于创建一词典,并在所述词典中为相同的父元素建立父元素群组,以及为相同的子元素建立子元素群组;
第二写入单元804,用于遍历所述阵列,并将所述阵列中的父元素作为key值写入至字典中,以及将所述阵列中的子元素作为value值写入至字典中;
文件树构建单元805,用于按照所述父元素群组和子元素群组对所述字典中的父元素和子元素进行位置调整,以此构建所述文件树数据结构的对象;
对象添加单元806,用于利用所述任务ID和基础信息为所述文件树数据结构的对象添加封面信息和概要信息。
在一实施例中,所述目录信息生成单元606包括:
数据遍历单元,用于遍历所有的维度数据,以判断各维度数据是否包含有子维度数据;
子标签设定单元,用于若包含有子维度数据,则为所述子维度数据设定子标签信息,并根据所述子标签信息将所述子维度数据添加至所述文件树数据结构的对象中,然后获取每一子维度数据在所述文件树数据结构的对象中的子位置信息;
目录信息添加单元,用于结合所述标签信息、位置信息、子标签信息和子位置信息为所述动态数据生成目录信息,并将所述目录信息添加至所述文件树数据结构的对象中。
在一实施例中,所述维度数据渲染单元607包括:
格式转换单元,用于将所有的所述维度数据分别转换为json格式数组,并使所述json格式数组与所述标签信息一一对应;
数组解析单元,用于将对应有标签信息的所述json格式数组解析为元素,并将所述元素作为结果节点插入至渲染树中,以渲染得到所述HTML文档。
在一实施例中,如图9所示,所述合并存储单元608包括:
图像获取单元901,用于针对每一所述PDF文档,获取对应的文档图像;
图像扫描单元902,用于对所述文档图像进行扫描,判断所述文档图像是否包含表格信息;所述表格信息包括无线表格和跨页表格,所述跨页表格包括前一分表格和后一分表格;
坐标获取单元903,用于当所述文档图像中包含无线表格时,提取所述无线表格所在的第一区域,并对所述第一区域提取边缘信息,以获取所述无线表格的界限坐标信息;
单元格排列单元904,用于通过卷积神经网络识别所述第一区域中的文本信息,并结合所述界限坐标信息对所述文本信息进行过滤,以得到所述无线表格的单元格信息,然后获取相邻单元格之间的单元格坐标信息,并根据所述单元格坐标信息对各单元格进行顺序排列;
位置信息获取单元905,用于当所述文档图像中包含跨页表格时,获取所述跨页表格中的前一分表格位置信息和后一分表格的位置信息;
条件判断单元906,用于判断所述前一分表格和后一分表格是否具备表格合并条件;其中,所述表格合并条件包括位置信息是否满足合并位置要求、表格规格是否一致;
单元格合并单元907,用于若判定所述前一分表格和后一分表格的位置信息未满足合并位置要求,则以所述前一分表格的位置信息为标准对所述后一分表格位置信息进行调整;若判定所述前一分表格和后一分表格的表格规格不一致,则对所述前一分表格和后一分表格进行规格统一处理;若判定所述前一分表格和后一分表格具备表格合并条件,则将所述前一分表格和后一分表格进行合并。
在一实施例中,如图10所示,所述合并存储单元608还包括:
文档排序单元1001,用于基于所述标签信息中的数据编号对各PDF文档进行排序;
页码识别单元1002,用于采用目标检测网络对排序后的PDF文档对应的文档图像进行页码识别,得到页码序列;
序列判断单元1003,用于判断所述页码序列是否符合各PDF文档的排列顺序;
第一判定单元1004,用于若判定所述页码序列符合各PDF文档的排列顺序,则对排序后的PDF文档进行合并;
第二判定单元1005,用于若判定所述页码序列不符合各PDF文档的排列顺序,则删除所有页码并根据所述标签信息中的数据编号合并PDF文档,然后对合并得到的PDF文件添加页码。
由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
本发明实施例还提供了一种计算机可读存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明实施例还提供了一种计算机设备,可以包括存储器和处理器,存储器中存有计算机程序,处理器调用存储器中的计算机程序时,可以实现上述实施例所提供的步骤。当然计算机设备还可以包括各种网络接口,电源等组件。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的状况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (10)
1.一种基于动态数据的PDF文件生成方法,其特征在于,包括:
获取待生成PDF文件的动态数据及其任务ID;
采用多线程异步的方式获取所述动态数据的基础信息,并结合所述任务ID和基础信息创建PDF文件路径;
创建用于存储动态数据的文件树数据结构的对象,并根据所述基础信息为所述文件树数据结构的对象添加对象信息;
根据所述任务ID拆分并获取所述动态数据下属的所有维度数据,并为每一维度数据设定标签信息;所述标签信息包括渲染路径、数据编号和标题;
根据所述标签信息将所有维度数据添加至所述文件树数据结构的对象中,并获取每一维度数据在所述文件树数据结构的对象中的位置信息;
结合标签信息和位置信息生成关于维度数据的目录信息,并将所述目录信息添加至所述文件树数据结构的对象中;
循环遍历所述文件树数据结构的对象以获取其中的维度数据,并根据各维度数据的标签信息将各维度数据分别渲染为HTML文档;
利用PDF转换工具将所有的所述HTML文档转换生成对应的PDF文档,并根据所述标签信息将所有的PDF文档合并为最终的PDF文件,并按照所述PDF文件路径进行存储。
2.根据权利要求1所述的基于动态数据的PDF文件生成方法,其特征在于,所述采用多线程异步的方式获取所述动态数据的基础信息,并结合所述任务ID和基础信息创建PDF文件路径,包括:
创建线程池,并初始化线程池中所有线程;
当存在待获取的动态数据的基础信息时,判断所述线程池中是否存在空闲线程;
若存在空闲线程,则选取所述空闲线程并对动态数据的基础信息进行获取;若未存在空闲线程,则将所述动态数据的基础信息放入预置的阻塞队列中,并当所述线程池中存在空闲线程时,利用所述空闲线程从所述阻塞队列中获取所述动态数据的基础信息;
将所述任务ID设置为文件名,并根据所述文件名判断是否存在相同文件;
若存在相同文件,则利用所述基础信息对所述文件名进行调整;若未存在相同文件,则根据所述基础信息在所述文件名下创建多个子文件。
3.根据权利要求1所述的基于动态数据的PDF文件生成方法,其特征在于,所述创建用于存储动态数据的文件树数据结构的对象,并根据所述基础信息为所述文件树数据结构的对象添加对象信息,包括:
结合所述基础信息获取所述动态数据中的父元素和子元素;
构建一阵列,并将所述父元素作为阵列key值写入,以及将子元素作为阵列value值写入;
创建一词典,并在所述词典中为相同的父元素建立父元素群组,以及为相同的子元素建立子元素群组;
遍历所述阵列,并将所述阵列中的父元素作为key值写入至字典中,以及将所述阵列中的子元素作为value值写入至字典中;
按照所述父元素群组和子元素群组对所述字典中的父元素和子元素进行位置调整,以此构建所述文件树数据结构的对象;
利用所述任务ID和基础信息为所述文件树数据结构的对象添加封面信息和概要信息。
4.根据权利要求1所述的基于动态数据的PDF文件生成方法,其特征在于,所述结合标签信息和位置信息生成关于维度数据的目录信息,并将所述目录信息添加至所述文件树数据结构的对象中,包括:
遍历所有的维度数据,以判断各维度数据是否包含有子维度数据;
若包含有子维度数据,则为所述子维度数据设定子标签信息,并根据所述子标签信息将所述子维度数据添加至所述文件树数据结构的对象中,然后获取每一子维度数据在所述文件树数据结构的对象中的子位置信息;
结合所述标签信息、位置信息、子标签信息和子位置信息为所述动态数据生成目录信息,并将所述目录信息添加至所述文件树数据结构的对象中。
5.根据权利要求1所述的基于动态数据的PDF文件生成方法,其特征在于,所述循环遍历所述文件树数据结构的对象以获取其中的维度数据,并根据各维度数据的标签信息将各维度数据分别渲染为HTML文档,包括:
将所有的所述维度数据分别转换为json格式数组,并使所述json格式数组与所述标签信息一一对应;
将对应有标签信息的所述json格式数组解析为元素,并将所述元素作为结果节点插入至渲染树中,以渲染得到所述HTML文档。
6.根据权利要求1所述的基于动态数据的PDF文件生成方法,其特征在于,所述根据所述标签信息将所有的PDF文档合并为最终的PDF文件,包括:
针对每一所述PDF文档,获取对应的文档图像;
对所述文档图像进行扫描,判断所述文档图像是否包含表格信息;所述表格信息包括无线表格和跨页表格,所述跨页表格包括前一分表格和后一分表格;
当所述文档图像中包含无线表格时,提取所述无线表格所在的第一区域,并对所述第一区域提取边缘信息,以获取所述无线表格的界限坐标信息;
通过卷积神经网络识别所述第一区域中的文本信息,并结合所述界限坐标信息对所述文本信息进行过滤,以得到所述无线表格的单元格信息,然后获取相邻单元格之间的单元格坐标信息,并根据所述单元格坐标信息对各单元格进行顺序排列;
当所述文档图像中包含跨页表格时,获取所述跨页表格中的前一分表格位置信息和后一分表格的位置信息;
判断所述前一分表格和后一分表格是否具备表格合并条件;其中,所述表格合并条件包括位置信息是否满足合并位置要求、表格规格是否一致;
若判定所述前一分表格和后一分表格的位置信息未满足合并位置要求,则以所述前一分表格的位置信息为标准对所述后一分表格位置信息进行调整;若判定所述前一分表格和后一分表格的表格规格不一致,则对所述前一分表格和后一分表格进行规格统一处理;若判定所述前一分表格和后一分表格具备表格合并条件,则将所述前一分表格和后一分表格进行合并。
7.根据权利要求6所述的基于动态数据的PDF文件生成方法,其特征在于,所述根据所述标签信息将所有的PDF文档合并为最终的PDF文件,还包括:
基于所述标签信息中的数据编号对各PDF文档进行排序;
采用目标检测网络对排序后的PDF文档对应的文档图像进行页码识别,得到页码序列;
判断所述页码序列是否符合各PDF文档的排列顺序;
若判定所述页码序列符合各PDF文档的排列顺序,则对排序后的PDF文档进行合并;
若判定所述页码序列不符合各PDF文档的排列顺序,则删除所有页码并根据所述标签信息中的数据编号合并PDF文档,然后对合并得到的PDF文件添加页码。
8.一种基于动态数据的PDF文件生成装置,其特征在于,包括:
动态数据获取单元,用于获取待生成PDF文件的动态数据及其任务ID;
路径创建单元,用于采用多线程异步的方式获取所述动态数据的基础信息,并结合所述任务ID和基础信息创建PDF文件路径;
文件树创建单元,用于创建用于存储动态数据的文件树数据结构的对象,并根据所述基础信息为所述文件树数据结构的对象添加对象信息;
维度数据获取单元,用于根据所述任务ID拆分并获取所述动态数据下属的所有维度数据,并为每一维度数据设定标签信息;所述标签信息包括渲染路径、数据编号和标题;
维度数据添加单元,用于根据所述标签信息将所有维度数据添加至所述文件树数据结构的对象中,并获取每一维度数据在所述文件树数据结构的对象中的位置信息;
目录信息生成单元,用于结合标签信息和位置信息生成关于维度数据的目录信息,并将所述目录信息添加至所述文件树数据结构的对象中;
维度数据渲染单元,用于循环遍历所述文件树数据结构的对象以获取其中的维度数据,并根据各维度数据的标签信息将各维度数据分别渲染为HTML文档;
合并存储单元,用于利用PDF转换工具将所有的所述HTML文档转换生成对应的PDF文档,并根据所述标签信息将所有的PDF文档合并为最终的PDF文件,并按照所述PDF文件路径进行存储。
9.一种计算机设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述的基于动态数据的PDF文件生成方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的基于动态数据的PDF文件生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310320386.3A CN116070596B (zh) | 2023-03-29 | 2023-03-29 | 基于动态数据的pdf文件生成方法、装置及相关介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310320386.3A CN116070596B (zh) | 2023-03-29 | 2023-03-29 | 基于动态数据的pdf文件生成方法、装置及相关介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116070596A true CN116070596A (zh) | 2023-05-05 |
CN116070596B CN116070596B (zh) | 2023-06-09 |
Family
ID=86175299
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310320386.3A Active CN116070596B (zh) | 2023-03-29 | 2023-03-29 | 基于动态数据的pdf文件生成方法、装置及相关介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116070596B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020184184A1 (en) * | 2001-06-04 | 2002-12-05 | Holcomb David Marshall | Virtual file system for dynamically-generated web pages |
CN110472208A (zh) * | 2019-06-26 | 2019-11-19 | 上海恒生聚源数据服务有限公司 | Pdf文档中表格解析的方法、系统、存储介质及电子设备 |
CN111159979A (zh) * | 2019-12-23 | 2020-05-15 | 昆明安泰得软件股份有限公司 | 一种将动态数据整合生成pdf文档的方法及程序 |
CN111881650A (zh) * | 2020-07-20 | 2020-11-03 | 北京百度网讯科技有限公司 | 一种pdf文档生成方法、装置以及电子设备 |
CN113723063A (zh) * | 2021-09-02 | 2021-11-30 | 四川启睿克科技有限公司 | 一种rtf转html并在pdf文件实现效果的方法 |
CN115048920A (zh) * | 2022-06-24 | 2022-09-13 | 平安普惠企业管理有限公司 | 前端数据导出方法、装置、设备及存储介质 |
CN115438638A (zh) * | 2022-08-26 | 2022-12-06 | 山东浪潮智慧医疗科技有限公司 | 一种树形数据分页输出表格文档的方法与系统 |
CN115510820A (zh) * | 2022-10-21 | 2022-12-23 | 浪潮金融信息技术有限公司 | 一种动态数据编辑方法、装置、设备及介质 |
-
2023
- 2023-03-29 CN CN202310320386.3A patent/CN116070596B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020184184A1 (en) * | 2001-06-04 | 2002-12-05 | Holcomb David Marshall | Virtual file system for dynamically-generated web pages |
CN110472208A (zh) * | 2019-06-26 | 2019-11-19 | 上海恒生聚源数据服务有限公司 | Pdf文档中表格解析的方法、系统、存储介质及电子设备 |
CN111159979A (zh) * | 2019-12-23 | 2020-05-15 | 昆明安泰得软件股份有限公司 | 一种将动态数据整合生成pdf文档的方法及程序 |
CN111881650A (zh) * | 2020-07-20 | 2020-11-03 | 北京百度网讯科技有限公司 | 一种pdf文档生成方法、装置以及电子设备 |
CN113723063A (zh) * | 2021-09-02 | 2021-11-30 | 四川启睿克科技有限公司 | 一种rtf转html并在pdf文件实现效果的方法 |
CN115048920A (zh) * | 2022-06-24 | 2022-09-13 | 平安普惠企业管理有限公司 | 前端数据导出方法、装置、设备及存储介质 |
CN115438638A (zh) * | 2022-08-26 | 2022-12-06 | 山东浪潮智慧医疗科技有限公司 | 一种树形数据分页输出表格文档的方法与系统 |
CN115510820A (zh) * | 2022-10-21 | 2022-12-23 | 浪潮金融信息技术有限公司 | 一种动态数据编辑方法、装置、设备及介质 |
Non-Patent Citations (1)
Title |
---|
KEN、: "如何动态生成pdf文件?", Retrieved from the Internet <URL:https://blog.csdn.net/qq_37102211/article/details/103089606> * |
Also Published As
Publication number | Publication date |
---|---|
CN116070596B (zh) | 2023-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10360294B2 (en) | Methods and systems for efficient and accurate text extraction from unstructured documents | |
JP3425408B2 (ja) | 文書読取装置 | |
US9069855B2 (en) | Modifying a hierarchical data structure according to a pseudo-rendering of a structured document by annotating and merging nodes | |
JP4682284B2 (ja) | 文書差分検出装置 | |
JP2007095102A (ja) | 文書処理装置および文書処理方法 | |
US20100198827A1 (en) | Method for finding text reading order in a document | |
CN111492370A (zh) | 用于识别结构化布局的文本图像的装置和方法 | |
CN110705503B (zh) | 生成目录结构化信息的方法和装置 | |
CN101488147A (zh) | 用于信息搜索的设备、系统和方法 | |
CN110427884A (zh) | 文档篇章结构识别方法、装置、设备和存储介质 | |
CN110287784B (zh) | 一种年报文本结构识别方法 | |
CN112651331A (zh) | 文本表格提取方法、系统、计算机设备及存储介质 | |
CN113807158A (zh) | 一种pdf内容提取方法、装置及设备 | |
CN114036909A (zh) | Pdf文档跨页表格合并方法、装置及相关设备 | |
JPH11184894A (ja) | 論理要素抽出方法および記録媒体 | |
EP2544100A2 (en) | Method and system for making document modules | |
CN116070596B (zh) | 基于动态数据的pdf文件生成方法、装置及相关介质 | |
CN117171331A (zh) | 基于大型语言模型的专业领域信息交互方法、装置及设备 | |
CN112597410A (zh) | 基于规则配置库对网页内容执行结构化提取的方法及装置 | |
JP5022252B2 (ja) | 表現テンプレート生成装置、その方法およびそのプログラム | |
CN112560849B (zh) | 基于神经网络算法的文理分割方法及系统 | |
CN115565193A (zh) | 问卷信息录入方法、装置、电子设备及存储介质 | |
CN115223182A (zh) | 一种文档版面识别方法及相关装置 | |
JP2007188427A (ja) | 話題画像選出方法及び装置及プログラム | |
CN108170651B (zh) | 一种信息处理的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |