【过程代码】主要讲学习和探索过程
【最终代码】直接可用

1. 文本识别

1.1 挑选数据

因为数据格式不统一,因此需要手工筛选可用数据:

  • 搜索images_1,从3044个文件中挑选出合格文件97个,其余删去;
  • 搜索images_2,从607个文件中删除出不合格文件94个,其余保留;
  • 搜索images_3,从93个文件中挑选出合格文件103个,其余删去;
  • 搜索images_4,保留合格文件1个;

最终以4078个pdf文件为基础,从生成的7892个图片中筛选出4719个,作为后续识别用。

1.2 数据预处理

将上述4725个图片分别放入48个文件夹,每个文件夹中最多放100个图像,具体原因见1.3。

1.3 文字识别

基于百度智能云的图文转换器进行文字识别,每次只能上传100个数据。
因此共进行48次识别任务,完成后得到48个压缩包。

因短时间内不便探索文字识别,故采用1.2和1.3中的低效重复劳动,未来须改进。

1.4 批量解压

参考python 批量解压zip文件到指定目录后的【最终代码】

import os
import zipfile

# 解压
def del_old_zip(file_name):
    os.remove(file_name)

def unzip(file_path, root):
    # file_path 为zip文件的全路径
    # root 为解压后的路径
    zip_name = os.listdir(file_path)  # 获取路径下的所有文件
    for name in zip_name:
        zip_file = os.path.join(file_path, str(name))  # 拼接文件的全名
        if zip_file.endswith(".zip"):
            # 判断文件的结尾是否为zip结尾
            fz = zipfile.ZipFile(zip_file, "r")
            for file in fz.namelist():
                fz.extract(file, root)
            fz.close()
            # 删除文件 # 可选的
            del_old_zip(zip_file)
        else:
            print(fr"{zip_file} this is not zip")
            

if __name__ == "__main__":
    parent_path = r"C:\Users\Administrator\Desktop\fyo"
    unfile = r"C:\Users\Administrator\Desktop\fyo"    
    unzip(parent_path, unfile)

测试成功,可一次性将所有压缩包解压。

2. 转换格式

2.1 测试

1.4解压缩之后得到4725个xlsx文件。由于xlrd包不能读取上文中生成的xlsx格式,因此需要先将其统一转换为xls格式。
参考python实现xlsx批量转xls后的【最终代码】

# -*- coding:utf-8 -*-
# -*- coding:utf-8 -*-
import numpy as np
import pandas as pd
import time
import os
import win32com.client as win32

inputdir = u'C:\\Users\\Administrator\\Desktop\\20221018_Recognition\\xlsx'
# 输出目录
outputdir = u'C:\\Users\\Administrator\\Desktop\\20221018_Recognition\\xlsx\\xls'
if not os.path.exists(outputdir):
    os.mkdir(outputdir)

i = 0

# 三个参数:父目录;所有文件夹名(不含路径);所有文件名
for parent, dirnames, filenames in os.walk(inputdir):
    for fn in filenames:
        i += 1
        print(i)
        if fn.split('.')[-1] == "xlsx":
            # time.sleep(0.2)
            filedir = os.path.join(parent, fn)
            print(filedir)
            excel = win32.gencache.EnsureDispatch('Excel.Application')
            wb = excel.Workbooks.Open(filedir)
            # xlsx: FileFormat=51
            # xls:  FileFormat=56
            wb.SaveAs((os.path.join(outputdir, fn.replace('xlsx', 'xls'))), FileFormat=56)
            wb.Close()
            excel.Application.Quit()

# 测试单个xlsx转换xls是否成功
# excel = pd.read_excel(r'C:\Users\Administrator\Desktop\20221018_Recognition\xlsx\xls\231.xls')
print("完成转换!!!")

测试成功,可一次性将所有xlsx格式的文件转换为xls格式。

2.2 调整

运行大批量数据时中途会发生报错,调整为每次转换500个xlsx文件。
过程中发现,报错、中断的原因是少数xlsx文件需要打开手动进行修复,完成后即可正常运行程序。

3. 单个xls文件内容处理

得到各个文件识别过后的单个excel文件,还得根据需要的格式进行统一的合并

3.1 单个文本提取文本片段

从单个excel提取所有文本的【过程代码】

# -*- coding:utf-8 -*-
import numpy as np
import pandas as pd

data = pd.read_excel(r'C:\Users\Administrator\Desktop\20221018_Recognition\xlsx\xls\231.xls')
# 病例的前4个重要信息
print(data.iloc[0, 0])
print(data.iloc[2, 0])
print(data.iloc[4, 0])
print(data.iloc[6, 0])

# 病例的诊断数据
XiJun_BingYuanTi = data.iloc[10, 1]         # 细菌_病原体
XiJun_XuLieShu = data.iloc[10, 2]           # 细菌_序列数
XiJun_XiangDuiFengDu = data.iloc[10, 3]     # 细菌_相对丰度%

ZhenJun_BingYuanTi = data.iloc[11, 1]       # 真菌_病原体
ZhenJun_XuLieShu = data.iloc[11, 2]         # 真菌_序列数
ZhenJun_XiangDuiFengDu = data.iloc[11, 3]   # 真菌_相对丰度%

BingDu_BingYuanTi = data.iloc[12, 1]        # 病毒_病原体
BingDu_XuLieShu = data.iloc[12, 2]          # 病毒_序列数
BingDu_XiangDuiFengDu = data.iloc[12, 3]    # 病毒_相对丰度%

JiShengChong_BingYuanTi = data.iloc[13, 1]      # 寄生虫_病原体
JiShengChong_XuLieShu = data.iloc[13, 2]        # 寄生虫_序列数
JiShengChong_XiangDuiFengDu = data.iloc[13, 3]  # 寄生虫_相对丰度%

TeShuBingYuanTi_BingYuanTi = data.iloc[14, 1]       # 特殊病原体_病原体
TeShuBingYuanTi_XuLieShu = data.iloc[14, 2]         # 特殊病原体_序列数
TeShuBingYuanTi_XiangDuiFengDu = data.iloc[14, 3]   # 特殊病原体_相对丰度%

RenTiWeiShengTaiJunQun_BingYuanTi = data.iloc[15, 1]        # 人体微生态菌群_病原体
RenTiWeiShengTaiJunQun_XuLieShu = data.iloc[15, 2]          # 人体微生态菌群_序列数
RenTiWeiShengTaiJunQun_XiangDuiFengDu = data.iloc[15, 3]    # 人体微生态菌群_相对丰度%

# 结果解释
print(data.iloc[17, 0])

测试成功
注意,病原体和序列号没有隔开

3.2 单个文本读取后,写进特定文本

参考如何使用Python给Excel写入数据后的【过程代码】

# -*- coding:utf-8 -*-
import numpy as np
import pandas as pd
from openpyxl import load_workbook

data = pd.read_excel(r'C:\Users\Administrator\Desktop\20221018_Recognition\xlsx\xls\231.xls')

# 加载excel,注意路径要与脚本一致
wb = load_workbook(r'C:\Users\Administrator\Desktop\样表.xlsx')
#激活excel表
sheet = wb.active

#向excel中写入对应的value
sheet.cell(row=4, column=1).value = data.iloc[0, 0]     # 信息1
sheet.cell(row=4, column=2).value = data.iloc[2, 0]     # 信息2
sheet.cell(row=4, column=3).value = data.iloc[4, 0]     # 信息3
sheet.cell(row=4, column=4).value = data.iloc[6, 0]     # 信息4
sheet.cell(row=4, column=5).value = data.iloc[10, 1]    # 细菌_病原体
sheet.cell(row=4, column=6).value = data.iloc[10, 2]    # 细菌_序列数
sheet.cell(row=4, column=7).value = data.iloc[10, 3]    # 细菌_相对丰度%
sheet.cell(row=4, column=8).value = data.iloc[11, 1]    # 真菌_病原体
sheet.cell(row=4, column=9).value = data.iloc[11, 2]    # 真菌_序列数
sheet.cell(row=4, column=10).value = data.iloc[11, 3]   # 真菌_相对丰度%
sheet.cell(row=4, column=11).value = data.iloc[12, 1]   # 病毒_病原体
sheet.cell(row=4, column=12).value = data.iloc[12, 2]   # 病毒_序列数
sheet.cell(row=4, column=13).value = data.iloc[12, 3]   # 病毒_相对丰度%
sheet.cell(row=4, column=14).value = data.iloc[13, 1]   # 寄生虫_病原体
sheet.cell(row=4, column=15).value = data.iloc[13, 2]   # 寄生虫_序列数
sheet.cell(row=4, column=16).value = data.iloc[13, 3]   # 寄生虫_相对丰度%
sheet.cell(row=4, column=17).value = data.iloc[14, 1]   # 特殊病原体_病原体
sheet.cell(row=4, column=18).value = data.iloc[14, 2]   # 特殊病原体_序列数
sheet.cell(row=4, column=19).value = data.iloc[14, 3]   # 特殊病原体_相对丰度%
sheet.cell(row=4, column=20).value = data.iloc[15, 1]   # 人体微生态菌群_病原体
sheet.cell(row=4, column=21).value = data.iloc[15, 2]   # 人体微生态菌群_序列数
sheet.cell(row=4, column=22).value = data.iloc[15, 3]   # 人体微生态菌群_相对丰度%
sheet.cell(row=4, column=23).value = data.iloc[17, 0]   # 结果解释

wb.save(r'C:\Users\Administrator\Desktop\样表.xlsx')
print('数据写入成功!')

测试成功,能够从指定excel读取文本、然后写进另一个指定excel。
注意,病原体和序列号没有隔开

4. 批量处理Excel

4.1 测试

参考python批量读取Excel文件后的【过程代码】

# -*- coding:utf-8 -*-
import numpy as np
import os
import pandas as pd
from openpyxl import load_workbook

# path = r'C:\Users\Administrator\Desktop\20221018_Recognition\xlsx\xls'
path = r'C:\Users\Administrator\Desktop\20221018_Recognition\xlsx\fyo'

# data = pd.read_excel(r'C:\Users\Administrator\Desktop\20221018_Recognition\xlsx\xls\231.xls')

# 加载excel,注意路径要与脚本一致
wb = load_workbook(r'C:\Users\Administrator\Desktop\样表.xlsx')
#激活excel表
sheet = wb.active

j = 2
for i in os.listdir(path):
    j += 1
    data = pd.read_excel(os.path.join(path, i))

    print("准备开始处理第 ", j - 2, " 个单据,单据名称是: ", i)

    #向excel中写入对应的value
    sheet.cell(row=j, column=1).value = j - 2               # 序号
    sheet.cell(row=j, column=2).value = i                   # 单据名称
    sheet.cell(row=j, column=3).value = data.iloc[0, 0]     # 信息1
    sheet.cell(row=j, column=4).value = data.iloc[2, 0]     # 信息2
    sheet.cell(row=j, column=5).value = data.iloc[4, 0]     # 信息3
    sheet.cell(row=j, column=6).value = data.iloc[6, 0]     # 信息4
    sheet.cell(row=j, column=7).value = data.iloc[10, 1]    # 细菌_病原体
    sheet.cell(row=j, column=8).value = data.iloc[10, 2]    # 细菌_序列数
    sheet.cell(row=j, column=9).value = data.iloc[10, 3]    # 细菌_相对丰度%
    sheet.cell(row=j, column=10).value = data.iloc[11, 1]    # 真菌_病原体
    sheet.cell(row=j, column=11).value = data.iloc[11, 2]    # 真菌_序列数
    sheet.cell(row=j, column=12).value = data.iloc[11, 3]   # 真菌_相对丰度%
    sheet.cell(row=j, column=13).value = data.iloc[12, 1]   # 病毒_病原体
    sheet.cell(row=j, column=14).value = data.iloc[12, 2]   # 病毒_序列数
    sheet.cell(row=j, column=15).value = data.iloc[12, 3]   # 病毒_相对丰度%
    sheet.cell(row=j, column=16).value = data.iloc[13, 1]   # 寄生虫_病原体
    sheet.cell(row=j, column=17).value = data.iloc[13, 2]   # 寄生虫_序列数
    sheet.cell(row=j, column=18).value = data.iloc[13, 3]   # 寄生虫_相对丰度%
    sheet.cell(row=j, column=19).value = data.iloc[14, 1]   # 特殊病原体_病原体
    sheet.cell(row=j, column=20).value = data.iloc[14, 2]   # 特殊病原体_序列数
    sheet.cell(row=j, column=21).value = data.iloc[14, 3]   # 特殊病原体_相对丰度%
    sheet.cell(row=j, column=22).value = data.iloc[15, 1]   # 人体微生态菌群_病原体
    sheet.cell(row=j, column=23).value = data.iloc[15, 2]   # 人体微生态菌群_序列数
    sheet.cell(row=j, column=24).value = data.iloc[15, 3]   # 人体微生态菌群_相对丰度%
    sheet.cell(row=j, column=25).value = data.iloc[17, 0]   # 结果解释
    wb.save(r'C:\Users\Administrator\Desktop\样表.xlsx')
print('数据写入成功!')

运行成功,证明如果所有文件格式统一,则可有效运行。
部分excel文件不能运行,需要单独拎出来

4.2 改进

参考python 移动文件
参考Python异常处理
参考python获取系统当前时间
【最终代码】

# -*- coding:utf-8 -*-
# -*- coding:utf-8 -*-
import os
import shutil
import datetime
import pandas as pd
from openpyxl import load_workbook

time_start = datetime.datetime.now()    # 记录开始时间

path = r'C:\Users\Administrator\Desktop\20221018_Recognition\xlsx\xls'
new_path = r"C:\Users\Administrator\Desktop\fyo"

wb = load_workbook(r'C:\Users\Administrator\Desktop\样表.xlsx')   # 加载excel,注意路径要与脚本一致
sheet = wb.active   # 激活excel表

j = 2
for i in os.listdir(path):
    j += 1
    data = pd.read_excel(os.path.join(path, i))

    try:
        print("")
        print("准备开始处理第 ", j - 2, " 个单据,单据名称是: ", i)

        # 向excel中写入对应的value
        sheet.cell(row=j, column=1).value = j - 2               # 序号
        sheet.cell(row=j, column=2).value = i                   # 单据名称
        sheet.cell(row=j, column=3).value = data.iloc[0, 0]     # 信息1
        sheet.cell(row=j, column=4).value = data.iloc[2, 0]     # 信息2
        sheet.cell(row=j, column=5).value = data.iloc[4, 0]     # 信息3
        sheet.cell(row=j, column=6).value = data.iloc[6, 0]     # 信息4
        sheet.cell(row=j, column=7).value = data.iloc[10, 1]    # 细菌_病原体
        sheet.cell(row=j, column=8).value = data.iloc[10, 2]    # 细菌_序列数
        sheet.cell(row=j, column=9).value = data.iloc[10, 3]    # 细菌_相对丰度%
        sheet.cell(row=j, column=10).value = data.iloc[11, 1]   # 真菌_病原体
        sheet.cell(row=j, column=11).value = data.iloc[11, 2]   # 真菌_序列数
        sheet.cell(row=j, column=12).value = data.iloc[11, 3]   # 真菌_相对丰度%
        sheet.cell(row=j, column=13).value = data.iloc[12, 1]   # 病毒_病原体
        sheet.cell(row=j, column=14).value = data.iloc[12, 2]   # 病毒_序列数
        sheet.cell(row=j, column=15).value = data.iloc[12, 3]   # 病毒_相对丰度%
        sheet.cell(row=j, column=16).value = data.iloc[13, 1]   # 寄生虫_病原体
        sheet.cell(row=j, column=17).value = data.iloc[13, 2]   # 寄生虫_序列数
        sheet.cell(row=j, column=18).value = data.iloc[13, 3]   # 寄生虫_相对丰度%
        sheet.cell(row=j, column=19).value = data.iloc[14, 1]   # 特殊病原体_病原体
        sheet.cell(row=j, column=20).value = data.iloc[14, 2]   # 特殊病原体_序列数
        sheet.cell(row=j, column=21).value = data.iloc[14, 3]   # 特殊病原体_相对丰度%
        sheet.cell(row=j, column=22).value = data.iloc[15, 1]   # 人体微生态菌群_病原体
        sheet.cell(row=j, column=23).value = data.iloc[15, 2]   # 人体微生态菌群_序列数
        sheet.cell(row=j, column=24).value = data.iloc[15, 3]   # 人体微生态菌群_相对丰度%
        sheet.cell(row=j, column=25).value = data.iloc[17, 0]   # 结果解释
        sheet.cell(row=j, column=26).value = "可用"  # 结果解释
        wb.save(r'C:\Users\Administrator\Desktop\样表.xlsx')

    except:
        print("    不能执行,需要跳过该文件: ", i)
        src = os.path.join(path, i)
        dst = os.path.join(new_path, i)
        shutil.move(src, dst)
        print("    文件转移成功: ", i)
        sheet.cell(row=j, column=26).value = "不可用"  # 结果解释
        pass

    if j % 20 == 0:     # 每隔20组数据,输出一次时间
        print("")
        print(datetime.datetime.now())
        print("")

print("")
print("")
print('数据写入成功!')

print("开始时间: ", time_start)
print("结束时间: ", datetime.datetime.now())

5. 查找excel中的重复数据

Python 进行excel查重
python 查找excel表格中重复的信息并标出来

6. 2022-10-22代码改进

# -*- coding:utf-8 -*-
import os
import re
import shutil
import datetime
import pandas as pd
from openpyxl import load_workbook

k = 0   # 第k个样本数据
j = 3   # 填写数据时的行数
time_start = datetime.datetime.now()    # 记录开始时间

path = r'C:\Users\Administrator\Desktop\20221018_Recognition\xlsx\xls'
# path = r'C:\Users\Administrator\Desktop\267'
new_path = r"C:\Users\Administrator\Desktop\fyo"
wb = load_workbook(r'C:\Users\Administrator\Desktop\样表.xlsx')   # 加载excel,注意路径要与脚本一致
sheet = wb.active   # 激活excel表

for i in os.listdir(path):  # 遍历目录下的每一个文件
    try:
        print("")
        k += 1
        print("准备开始处理第 ", k, " 个单据,单据名称是: ", i)

        data = pd.read_excel(os.path.join(path, i))     # 读取目录下的每一个文件

        beizhu = []     # 记录出现”备注“的次数,并挑出最小的一次,用于筛选前缀信息
        xj= []          # 细菌
        zj = []         # 真菌
        bd = []         # 病毒
        jsc = []        # 寄生虫
        tsbyt = []      # 特殊病原体
        rtwstjq = []    # 人体微生态菌群
        jgjs = []       # 结果解释

        # 向excel中写入对应的value
        sheet.cell(row=j, column=1).value = k                   # 序号
        sheet.cell(row=j, column=2).value = i                   # 单据名称
        sheet.cell(row=j, column=3).value = data.iloc[0, 0]     # 信息1

        for hang in range(len(data.iloc[:, 0])):
            if type(data.iloc[hang, 0]) is not float:
                if "备注" in data.iloc[hang, 0]:
                    beizhu.append(hang)
        BeiZhu = min(beizhu)    # 找到"备注"的行数

        # 与上一个循环不可合并,以避免诊断里面出现病原体类型
        for hang in range(BeiZhu+1, len(data.iloc[:, 0])):
            if type(data.iloc[hang, 0]) is not float:
                if "细菌" in data.iloc[hang, 0]:
                    xj.append(hang)
                if "真菌" in data.iloc[hang, 0]:
                    zj.append(hang)
                if "病毒" in data.iloc[hang, 0]:
                    bd.append(hang)
                if "寄生虫" in data.iloc[hang, 0]:
                    jsc.append(hang)
                if "特殊病原体" in data.iloc[hang, 0]:
                    tsbyt.append(hang)
                if "人体微生态菌群" in data.iloc[hang, 0]:
                    rtwstjq.append(hang)
                if "结果解释" in data.iloc[hang, 0]:
                    jgjs.append(hang)

        dayinxishu = 1  # 打印系数
        for hang in range(1, BeiZhu+1):     # 从信息2开始填写
            if data.iloc[hang, 0] not in data.iloc[hang - 1, 0]:
                sheet.cell(row=j, column=3 + dayinxishu).value = data.iloc[hang, 0]
                dayinxishu += 1

        XJ = min(xj)            # 找到"细菌"的行数
        ZJ = min(zj)            # 找到"真菌"的行数
        BD = min(bd)            # 找到"病毒"的行数
        JSC = min(jsc)          # 找到"寄生虫"的行数
        TSBYT = min(tsbyt)      # 找到"特殊病原体"的行数
        RTWSTJQ = min(rtwstjq)  # 找到"人体微生态菌群"的行数
        JGJS = min(jgjs)        # 找到"结果解释"的行数

        sheet.cell(row=j, column=7).value = "成功"    # 说明该数据是否可用

        for hang in range(ZJ - XJ):  # 可能有多行的细菌数据,需要逐条列出
            sheet.cell(row=j + hang, column=8).value = data.iloc[XJ + hang, 1]   # 细菌_病原体
            sheet.cell(row=j + hang, column=9).value = data.iloc[XJ + hang, 2]   # 细菌_序列数
            sheet.cell(row=j + hang, column=10).value = data.iloc[XJ + hang, 3]  # 细菌_相对丰度%
            # print("ZJ - XJ")

        for hang in range(BD - ZJ):  # 可能有多行的真菌数据,需要逐条列出
            sheet.cell(row=j + hang, column=11).value = data.iloc[ZJ + hang, 1]  # 真菌_病原体
            sheet.cell(row=j + hang, column=12).value = data.iloc[ZJ + hang, 2]  # 真菌_序列数
            sheet.cell(row=j + hang, column=13).value = data.iloc[ZJ + hang, 3]  # 真菌_相对丰度%
            # print("BD - ZJ")

        for hang in range(JSC - BD):  # 可能有多行的病毒数据,需要逐条列出
            sheet.cell(row=j + hang, column=14).value = data.iloc[BD + hang, 1]  # 病毒_病原体
            sheet.cell(row=j + hang, column=15).value = data.iloc[BD + hang, 2]  # 病毒_序列数
            sheet.cell(row=j + hang, column=16).value = data.iloc[BD + hang, 3]  # 病毒_相对丰度%
            # print("JSC - BD")

        for hang in range(TSBYT - JSC):  # 可能有多行的寄生虫数据,需要逐条列出
            sheet.cell(row=j + hang, column=17).value = data.iloc[JSC + hang, 1]  # 寄生虫_病原体
            sheet.cell(row=j + hang, column=18).value = data.iloc[JSC + hang, 2]  # 寄生虫_序列数
            sheet.cell(row=j + hang, column=19).value = data.iloc[JSC + hang, 3]  # 寄生虫_相对丰度%
            # print("TSBYT - JSC")

        for hang in range(RTWSTJQ - TSBYT):  # 可能有多行的特殊病原体数据,需要逐条列出
            sheet.cell(row=j + hang, column=20).value = data.iloc[TSBYT + hang, 1]  # 特殊病原体_病原体
            sheet.cell(row=j + hang, column=21).value = data.iloc[TSBYT + hang, 2]  # 特殊病原体_序列数
            sheet.cell(row=j + hang, column=22).value = data.iloc[TSBYT + hang, 3]  # 特殊病原体_相对丰度%
            # print("RTWSTJQ - TSBYT")

        for hang in range(JGJS - RTWSTJQ):  # 可能有多行的人体微生态菌群数据,需要逐条列出
            sheet.cell(row=j + hang, column=23).value = data.iloc[RTWSTJQ + hang, 1]  # 人体微生态菌群_病原体
            sheet.cell(row=j + hang, column=24).value = data.iloc[RTWSTJQ + hang, 2]  # 人体微生态菌群_序列数
            sheet.cell(row=j + hang, column=25).value = data.iloc[RTWSTJQ + hang, 3]  # 人体微生态菌群_相对丰度%
            # print("JGJS - RTWSTJQ")

        sheet.cell(row=j, column=26).value = data.iloc[JGJS+1, 0]    # 结果解释

        # 根据数据情况来调整当前样本和下一样本之间的空行
        j += max(ZJ - XJ, BD - ZJ, JSC - BD, TSBYT - JSC, RTWSTJQ - TSBYT, JGJS - RTWSTJQ)
        wb.save(r'C:\Users\Administrator\Desktop\样表.xlsx')

    except:
        print("    不能执行,需要跳过该文件,并转移: ", i)
        src = os.path.join(path, i)
        dst = os.path.join(new_path, i)
        shutil.move(src, dst)
        print("    文件转移成功: ", i)
        sheet.cell(row=j, column=7).value = "失败"  # 结果解释
        j += 1
        wb.save(r'C:\Users\Administrator\Desktop\样表.xlsx')
        pass

    if j % 20 == 0:     # 每隔20组数据,输出一次时间
        print("")
        print(datetime.datetime.now())

print("")
print("")
print('数据写入成功!')

print("开始时间: ", time_start)
print("结束时间: ", datetime.datetime.now())
Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐