技术路线图与流程图绘制工具

2024-08-15 09:03:26 浏览数 (1)

1.在线网站processon

2.本地软件draw.io

容器

快捷键:ctrl g,能将图形转换成容器,使其他图形能够移入该容器中。移入时会有紫色提醒(ctrl g同时也是组合的快捷键)。

复制

除了常用的ctrl c与ctrl v外,还能使用ctrl 鼠标左键拖拽。

常用框图

在空白处双击就会出现

该软件由于开源特性,在vscdoe中也可以作为插件使用

教程

使用技巧

从图片识别流程图,并在draw.io中绘制

代码语言:python代码运行次数:0复制
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;whiteSpace=wrap;html=1;" 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:UsersJackDesktop11.png'

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

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

    print('已复制到剪切板,请在draw.io中粘贴')
注:可能出现问题的地方

安装命令:

安装paddle模块

代码语言:bash复制
python -m pip install paddlepaddle==2.5.2 -i https://pypi.tuna.tsinghua.edu.cn/simple

安装paddleocr模块

代码语言:bash复制
pip install paddleocr

参考链接

0 人点赞