PaddleOCR实现drawio架构图快速识别和转换,保持文字相对位置不变,便于后续调整。

随着人工智能技术的不断发展,OCR技术也越来越成熟。PaddleOCR作为一款开源的OCR工具,不仅能够识别文字,还能够识别表格、公式、图像等多种形式的信息。在架构图转换方面,PaddleOCR也有着不可替代的作用。

一般画架构图会参照已有的模板,绘制过程往往需要手动输入文字,然后再手动调整文字的位置,这样不仅费时费力,而且容易出现误差。而PaddleOCR则可以通过识别架构图中的文字,自动转换为drawio能够识别的格式,并且能够保持文字的相对位置不变,大大提高了转换的效率和准确性。
具体操作步骤如下:

1.使用PaddleOCR对架构图进行文字识别,生成识别结果,并复制到剪切板。
2.将剪切板的结果粘贴到drawio中,自动转换为drawio能够识别的格式。

通过PaddleOCR的帮助,架构图转换变得更加简单、快捷、准确。不仅可以提高工作效率,还可以减少人为误差,为工程师们带来更好的使用体验。


import pyperclip, os
from paddleocr import PaddleOCR, paddleocr

def convert_to_mxGeometry(coords):
    x_min = min([coord[0] for coord in coords])
    y_min = min([coord[1] for coord in coords])
    x_max = max([coord[0] for coord in coords])
    y_max = max([coord[1] for coord in coords])
    width = x_max - x_min
    height = y_max - y_min
    x = x_min + width/2
    y = y_min + height/2
    return f'<mxGeometry x="{x}" y="{y}" width="{width}" height="{height}" as="geometry"/>'

def test_convert_to_mxGeometry():
    coords = [[29.0, 122.0], [216.0, 122.0], [216.0, 135.0], [29.0, 135.0]]
    print(convert_to_mxGeometry(coords)) 
    
def ocr_to_mxGraphModel(img_path):
    # 判断是否为图片
    if not img_path.endswith(('.jpg', '.png', '.jpeg')):
        return '请使用图片文件'

    # 判断图片是否存在
    if not os.path.exists(img_path):
        return '图片不存在'

    # 关闭DEBUG日志的打印
    import logging
    paddleocr.logging.disable(logging.DEBUG)

    # Paddleocr目前支持的多语言语种可以通过修改lang参数进行切换
    # 例如`ch`, `en`, `fr`, `german`, `korean`, `japan`
    ocr = PaddleOCR(use_angle_cls=True, lang="ch")

    print('正在识别图片,请稍等...')
    result = ocr.ocr(img_path, cls=True)

    num, ret= 2, ['<mxGraphModel><root><mxCell id="0"/><mxCell id="1" parent="0"/>']
    for line in result:
        for word in line:
            # xml转义字符
            value = word[1][0].replace('&', '&amp;').replace('<', '&lt;').replace('>', '&gt;').replace('"', '&quot;')
            ret.append(f'<mxCell id="{num}" value="{value}" style="rounded=0%3BwhiteSpace=wrap%3Bhtml=1%3B" vertex="1" parent="1">')
            ret.append(convert_to_mxGeometry(word[0]))
            ret.append('</mxCell>')
            num += 1
            # print(convert_to_mxGeometry(word[0]) , word[1][0])
    ret.append('</root></mxGraphModel>')

    print('识别完成')

    # 拼接成xml
    return ''.join(ret)

if __name__ == '__main__':

    print('程序开始运行')

    # 图片路径
    img_path = R'C:\Users\Jack\Desktop\11.png'

    # 识别图片,得到xml
    xml = ocr_to_mxGraphModel(img_path)

    # 复制到剪切板
    pyperclip.copy(xml)

    print('已复制到剪切板,请在draw.io中粘贴')

原始图片
在这里插入图片描述

识别后的
在这里插入图片描述

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: drawio 技术架构图是指绘制 drawio 软件的技术架构的图示。drawio 是一款基于 Web 的绘图工具,用于创建流程图、组织结构图、UML 图、网络图等类型的图表。 在 drawio 的技术架构中,最核心的部分是前端和后端。前端负责处理用户界面,包括绘图区、工具栏、菜单等,以及用户的输入操作。后端负责处理与后台服务器的通信,数据库的读写,以及保存和加载图表数据等。 前端技术架构通常采用 HTML、CSS 和 JavaScript,其中 HTML 用于搭建网页结构,CSS 用于美化界面样式,JavaScript 用于实现前端的交互逻辑。常用的前端框架包括 Vue.js、React.js 等,它们可以提供更好的用户体验和良好的扩展性。 后端技术架构通常采用 Java、Node.js 等编程语言,通过服务器与前端进行通信。后端负责实现各种功能模块,包括用户认证、图表数据的保存和加载、协同编辑等。同时,后端还需要与数据库交互,负责存储和查询图表数据。常用的数据库包括 MySQL、PostgreSQL 等,它们可以提供可靠的数据存储和高效的数据查询。 除了前端和后端之外,drawio 的技术架构还包括其他组件和服务。例如,绘图区使用 Canvas 或 SVG 实现图形的绘制和编辑;工具栏和菜单使用自定义组件实现用户操作的功能集合;图表数据可以使用 XML、JSON 或其他格式进行存储和传输。 综上所述,drawio 技术架构图涵盖了前端、后端、数据库、图形绘制、用户界面等多个方面的技术组件,通过协同工作,实现了用户友好的图表绘制和编辑功能。 ### 回答2: drawio是一种基于web的在线绘图工具,用于创建技术架构图。它采用了分层架构设计,通过以下组件实现其功能。 首先,drawio的核心是绘图引擎,它负责处理用户的绘图操作。当用户通过鼠标或键盘进行绘图,绘图引擎接收并解析这些输入,并将其转化为绘图指令。然后,绘图引擎会将这些指令传递给图形渲染器。 图形渲染器是drawio的另一个重要组件。它负责将绘图引擎生成的图形指令转化为具体的图形对象,并将其渲染到绘图区域中显示给用户。图形渲染器还负责处理图形对象的样式、布局等属性。 另外,drawio还包含了一个UI(用户界面)层。UI层负责显示用户可以操作的各种工具、菜单和面板,并提供读取和写入绘图数据的接口。用户通过UI层与绘图引擎进行交互,选择不同的绘图工具、调整图形样式、添加文本等。 为了实现在线协作功能,drawio还有一个协作服务器。当用户在绘图工具中进行操作时,这些操作会被传输到协作服务器,服务器将这些操作广播给其他协作用户,以便实时同步各用户间的绘图内容。 此外,drawio还包含了文件存储和读取组件。用户可以将绘图保存到服务器或本地设备中,并随时读取和编辑。 总结来说,drawio的技术架构包含绘图引擎、图形渲染器、UI层、协作服务器和文件存储/读取组件。这些组件紧密合作,使得用户能够创建、编辑和共享技术架构图。 ### 回答3: drawio 技术架构图描述了 drawio 应用的技术组成和相互之间的关系。 drawio 采用了分层的架构。在最底层是前端开发技术,主要使用 HTML、CSS 和 JavaScript 实现用户界面。通过前端开发技术,可以实现图形绘制、交互操作和界面展示等功能。在前端开发技术的基础上,drawio 还使用了一些前端框架,如 Vue.js,以便于更高效地进行前端开发。 在中间层是后端开发技术,主要采用了 Java 编程语言。后端开发技术主要负责处理和存储用户数据,以及实现一些高级功能,如文件保存和分享等。同时,后端开发技术还通过与前端开发技术的交互,将用户操作反馈到前端,以保持 drawio 应用的实时性和稳定性。 在最高层是与其他服务和组件的集成。drawio 应用可以与云服务进行集成,如 Dropbox 和 Google Drive,以实现文件的云存储和共享。同时,drawio 还可以与第三方插件进行集成,以扩展应用的功能。 除了上述的技术层次外,drawio 还使用了一些开源工具和库来辅助开发。例如,使用了 Spring Boot 框架来搭建后端开发环境,使用了 Webpack 构建工具来打包和压缩前端资源。 综上所述,drawio 的技术架构图包括前端开发技术、后端开发技术以及与其他服务和组件的集成。这种架构使得 drawio 应用具备强大的图形编辑和展示功能,并具备灵活的扩展性和易用性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值