热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python读取json数据还原表格批量转换成html

这篇文章主要介绍了python读取json数据还原表格批量转换成html,由于需要对ocr识别系统的表格识别结果做验证,通过返回的json文件结果对比比较麻烦,故需要将json文件

python读取json数据还原表格批量转换成html

背景:

由于需要对ocr识别系统的表格识别结果做验证,通过返回的json文件结果对比比较麻烦,故需要将json文件里面的识别结果还原为表格做验证。

文件部分内容如下:

{"row":"6","col","5""start_row": 0, "start_column": 0, "end_row": 0, "end_column": 0, "data": "称", "position": [51, 71, 168, 93], "org_position": [50, 60, 167, 62, 166, 84, 49, 82], "char_position": [[86, 83, 100, 100]], "lines": [{"text": "称", "poly": [84, 73, 98, 73, 98, 90, 84, 90, 0.874], "score": 0.874, "char_centers": [[91, 82]], "char_polygons": [[84, 77, 98, 74, 98, 87, 84, 90]], "char_candidates": [["称"]], "char_candidates_score": [[0.999]], "char_scores": [0.999]}]}

现在需要通过行列的起始和结束坐标以及内容生成相应的表格

开始准备使用js但由于一些语法忘记,所以还是选用python进行。
在经过一些列研究后发现利用python-docx可自动生成表格,但是格式是word的,所有后期又进行了word转html操作。

一、实操

pip install python_docx

1.首先创建一个新的文档

from docx import Document
document = Document()

然后用Document类的add_table方法增加一个表格,其中rows是行,cols是列,style表格样式,具体可以查看官方文档:

table = document.add_table(rows=37,cols=13,)

上述代码就在word里插入了一个37行、13列的表格。(有37*13=481个cell)

生成的每个cell都是有“坐标”的,比如上面的表格左上角cell为(0,0),右下角cell为(36,12)

下面要做的就是合并一些cell,从而达到我们最终需要的表格

table.cell(0,0).merge(table.cell(2,2))

上述代码就将cell(0,0)到cell(2,2)之间的所有cell合并成一个cell

这里需要注意的是,虽然每个cell都合并了,但其实它还是存在的。比如合并了(0,0)和(0,1)两个cell,那么这个合并的cell其实就是(0,0;0,1)

如果cell较多,无法直观的看出坐标的话,可以用下列的代码将每个cell的坐标都标注出来,方便合并

document = Document()
table = document.add_table(rows=37,cols=13,)

document.save("table-1.docx")

document1 = Document("table-1.docx")
table = document1.tables[0]
for row,obj_row in enumerate(table.rows):
   for col,cell in enumerate(obj_row.cells):
       cell.text = cell.text + "%d,%d " % (row,col)

document1.save("table-2.docx")

2.添加文本

将所有cell依次合并后,就需要向合并后的cell里添加文本。

用table的row方法可以得到一个表格的一行list其中包含了这一行的所有cell

hdr_cells0 = table.rows[0].cells

上面代码就得到了合并表格后的第一行所有cell,然后我们用hdr_cell0[0]就可以得到合并表格后的第一行的第一个cell。用add_paragraph方法即可像cell里添加文本

hdr_cells0[0].add_paragraph("数据文字")

其他使用方法可参考官网模块:https://www.osgeo.cn/python-docx/

二、word转成html

1.使用pydocx转换

pip install pydocx

from pydocx import PyDocX
html = PyDocX.to_html("test.docx")
f = open("test.html", "w", encoding="utf-8")
f.write(html)
f.close()

通过网页上传word文档,只接收docx


2.使用win32模块

pip3 install pypiwin32

from win32com import client as wc
import os

word = wc.Dispatch("Word.Application")


def wordsToHtml(dir):
    for path, subdirs, files in os.walk(dir):
        for wordFile in files:
            wordFullName = os.path.join(path, wordFile)
            doc = word.Documents.Open(wordFullName)

            wordFile2 = wordFile
            dotIndex = wordFile2.rfind(".")
            if (dotIndex == -1):
                print(wordFullName + "********************ERROR: 未取得后缀名!")

            fileSuffix = wordFile2[(dotIndex + 1):]
            if (fileSuffix == "doc" or fileSuffix == "docx"):
                fileName = wordFile2[: dotIndex]
                htmlName = fileName + ".html"
                htmlFullName = os.path.join(path, htmlName)
                print("generate html:" + htmlFullName)
                doc.SaveAs(htmlFullName, 10)
                doc.Close()

    word.Quit()
    print("")
    print("Finished!")


if __name__ == "__main__":
    import sys

    if len(sys.argv) != 2:
        print("Usage: python funcName.py rootdir")
        sys.exit(100)
    wordsToHtml(sys.argv[1])

到此这篇关于python读取json数据还原表格批量转换成html的文章就介绍到这了,更多相关python读取json数据内容请搜索编程笔记以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程笔记!


推荐阅读
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 深入理解Tornado模板系统
    本文详细介绍了Tornado框架中模板系统的使用方法。Tornado自带的轻量级、高效且灵活的模板语言位于tornado.template模块,支持嵌入Python代码片段,帮助开发者快速构建动态网页。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文介绍了如何使用JQuery实现省市二级联动和表单验证。首先,通过change事件监听用户选择的省份,并动态加载对应的城市列表。其次,详细讲解了使用Validation插件进行表单验证的方法,包括内置规则、自定义规则及实时验证功能。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文详细介绍了如何使用Python编写爬虫程序,从豆瓣电影Top250页面抓取电影信息。文章涵盖了从基础的网页请求到处理反爬虫机制,再到多页数据抓取的全过程,并提供了完整的代码示例。 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 前言--页数多了以后需要指定到某一页(只做了功能,样式没有细调)html ... [详细]
  • 在Linux系统中配置并启动ActiveMQ
    本文详细介绍了如何在Linux环境中安装和配置ActiveMQ,包括端口开放及防火墙设置。通过本文,您可以掌握完整的ActiveMQ部署流程,确保其在网络环境中正常运行。 ... [详细]
  • Android 渐变圆环加载控件实现
    本文介绍了如何在 Android 中创建一个自定义的渐变圆环加载控件,该控件已在多个知名应用中使用。我们将详细探讨其工作原理和实现方法。 ... [详细]
  • Windows 系统下 MySQL 8.0.11 的安装与配置
    本文详细介绍了在 Windows 操作系统中安装和配置 MySQL 8.0.11 的步骤,包括环境准备、安装过程以及后续配置,帮助用户顺利完成数据库的部署。 ... [详细]
author-avatar
手机用户2602910773
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有