顺序提取

需求

将docx中的正文、表格和图片按原有的顺序提取出来。
之前就尝试解决过,最终选择通过本文的方法实现。

解决方法

python的库函数不足以直接进行处理;
docx文档也难以进行外部操作。

所以思路是:
1.需要实验报告的图片前加上标识符:

--picture%--

其中%是这个图片的序号,从一开始;
2.分别提取正文和图片,生成txt文件和png文件,此时txt中图片相应位置内容为空;
3.调用外部接口识别图片内容,插入到txt相应标识的后边。
这样就可以满足需求。

code:

# 将图片信息写入txt相应位置
# 对输入文件直接操作,输入输出路径一致
# num:get_pictures返回的图片数量
# 需要先执行for_docx和get_pictures
def write_picture_into_file(txt_path, picture_folder_path, num):

    i=1
    while(i<=num):
        # 读取图片内容
        # 生成都是png,就按png处理
        fname = picture_folder_path + '\\' + pick_method.get_file_name(txt_path) + '_image' + i.__str__() + '.png'
        picture_text = pick_method.get_picture_text(fname)

        # 把图片内容放在指定位置
        fr = open(txt_path, 'r', encoding='utf-8')
        content = fr.read()
        keyword = '--picture' + i.__str__() + '--'
        post = content.find(keyword)
        if post!=-1:
            content = content[:post + len(keyword)] + picture_text + content[post + len(keyword):]
            fw = open(txt_path, 'w', encoding='utf-8')
            fw.write(content)
            fw.close()
        fr.close()
        i = i + 1

缺陷

1.处理速度较慢,不过主要是ocr的问题,无法解决,可以尝试减少读写文件次数;
2.需要手动加入标识符;
3.标识符被跳过:相应图片被忽略;
4.标识符顺序错误:会按照错误的顺序插入。

猜你喜欢

转载自blog.csdn.net/Mr__666/article/details/116854130