# Document AI Tools >***更新时间:2023-05-17*** 在当前目录下,需要安装依赖包 运行命令 *pip install -r requirements.txt* ## 1. 通用 ### 1.1 图片角度矫正 #### img_correct.py - 运行指令 *python img_correct.py --img_dir ./imgs --save_dir ./corrected_imgs* - 参数img_dir和img_path不能同时使用 | **参数名** | **数据类型** | **默认值** | **说明** | |------------|:--------:|------------------|------------| | --img_dir | str | ' ' | 待矫正图片文件夹路径 | | --img_path | str | ' ' | 待矫正图片的路径 | | --save_dir | str | ./corrected_imgs | 矫正后图片保存路径 | 对应项目--correct_imgs_rotation ### 1.2 pdf文件转图片 #### img_to_pdf.py - 将多张图片组合成一个pdf文件 - 运行指令 *python img_to_pdf.py --img_dir ./images --save_dir ./pdf_file* | **参数名** | **数据类型** | **默认值** | **说明** | |------------|:--------:|------------|----------------| | --img_dir | str | ./images | 需要转pdf的图片文件夹路径 | | --save_dir | str | ./pdf_file | 生成pdf文件的保存路径 | #### pdf_to_image.py - 运行指令 *python pdf_to_image.py --pdf_dir ./pdf_file --save_dir ./pdf_images* - 参数pdf_dir和pdf_path不能同时使用 | **参数名** | **数据类型** | **默认值** | **说明** | |------------|:--------:|--------------|-----------------| | --pdf_dir | str | ' ' | 需要转图片的pdf文件夹路径 | | --pdf_path | str | ' ' | 需要转图片的单个pdf文件路径 | | --save_dir | str | ./pdf_images | 生成图片的保存路径 | 对应项目--pdf_rename_to_images ### 1.3 图片重命名 #### images_rename.py - 运行指令 *python images_rename.py --img_dir ./images --save_dir ./images_result* | **参数名** | **数据类型** | **默认值** | **说明** | |------------|:--------:|-----------------|---------------| | --img_dir | str | ./images | 待重命名图片文件夹所在路径 | | --save_dir | str | ./images_result | 重命名后图片的保存路径 | *命名规范:kdan_year-month-day_index[0:8]_uuid[0:4].jpg* 对应项目--Images_rename ### 1.4 根据label截图保存 #### cut_roi_save.py - 数据准备:labelme标注的原始数据集(图片和json文件在同目录下); - 运行指令 *python cut_roi_save.py --input_dirs ./fold1 ./fold2 --label Table --save_dir ./images --size 300* | **参数名** | **数据类型** | **默认值** | **说明** | |--------------|:---------:|-----------------|-----------------------------------| | --input_dirs | [str,str] | ./fold1 ./fold2 | 待处理的多个文件夹(图片以及json)路径,每条路径之间用空格隔开 | | --label | str | Table | 截取图片的标签名[Table,Figure] | | --save_dir | str | ./images | 截取图片的保存路径 | | --size | int | 0 | 等比缩放短边需达到的尺寸(如不设置此参数,则按原尺寸保存) | 对应项目--screenshot_save_by_label ### 1.5 复制图片和对应json文件 #### data_copy.py - 运行指令 *python data_copy.py --anno_dirs ./fold1 ./fold2 --data_dir ./fold3* | **参数名** | **数据类型** | **默认值** | **说明** | |--------------|:---------:|-----------------|-----------------------------------| | --anno_dirs | [str,str] | ./fold1 ./fold2 | 待复制图片和json文件夹 | | --data_dir | str | ./fold3 | 目标文件夹 | 对应项目--Data_Copy #### train_and_val_divide_copy.py - 对图片和对应json文件进行划分再复制 - 运行指令 *python data_copy.py --anno_dirs ./fold1 ./fold2 --train_ratio 0.9 --train_dir ./fold3 --val_dir ./fold4* | **参数名** | **数据类型** | **默认值** | **说明** | |--------------|:---------:|-----------------|-----------------------------------| | --anno_dirs | [str,str] | ./fold1 ./fold2 | 待复制图片和json文件夹 | | --train_ratio | float | 0.9 | 划分比例 | | --train_dir | str | ./fold3 | 训练目标文件夹 | | --val_dir | str | ./fold4 | 验证目标文件夹 | 对应项目--Data_Copy ### 1.6 半自动标注 #### infer_demo.py - 运行指令 *python infer_demo.py --model_path ./onnx_ile/picodet_l_416_lp_0826.onnx --class_file ./lp_label.txt --conf_Threshold 0.5 --img_dir ./images --result_dir ./result* | **参数名** | **数据类型** | **默认值** | **说明** | |------------------|:--------:|----------------------------------------|--------------------------| | --model_path | str | ./onnx_file/picodet_l_416_lp_0826.onnx | 本次使用onnx文件的路径 | | --class_file | str | ./lp_label.txt | label文件(所有label以及对应id)路径 | | --conf_Threshold | float | 0.5 | 类别置信分数,大于此分数的预测目标才会被保留 | | --img_dir | str | ./imgs | 需进行的标注的图片文件夹路径 | | --result_dir | str | ./result | 可视化的图片结果过图片保存路径 | 对应项目--semi_auto_labeling #### auto_label.py - 使用自己的SDK进行半自动标注 - 运行指令 *python auto_label.py --mode ~.model --model_licence ~.txt --score 0.5 --image_dir ./images --view_result_dir ./result* | **参数名** | **数据类型** | **默认值** | **说明** | |------------------|:--------:|----------------------------------------|--------------------------| | --mode | str | ~.model | SDK模型的路径 | | --model_licence | str | ~.txt | SDK模型的licence | | --score | float | 0.5 | 类别置信分数,大于此分数的预测目标才会被保留 | | --image_dir | str | ./images | 需进行的标注的图片文件夹路径 | | --view_result_dir | str | ./result | 可视化的图片结果过图片保存路径 | 对应项目--SDK_Auto_Label #### auto_add_label.py - 使用自己的SDK在已有的标注下进行半自动添加标注,要根据添加的标签对应改动代码 - 运行指令 *python auto_label.py --mode ~.model --model_licence ~.txt --score 0.5 --image_dir ./images --view_result_dir ./result* | **参数名** | **数据类型** | **默认值** | **说明** | |------------------|:--------:|----------------------------------------|--------------------------| | --mode | str | ~.model | SDK模型的路径 | | --model_licence | str | ~.txt | SDK模型的licence | | --score | float | 0.5 | 类别置信分数,大于此分数的预测目标才会被保留 | | --image_dir | str | ./images | 需进行添加标注的图片文件夹路径 | | --view_result_dir | str | ./result | 可视化的图片结果过图片保存路径 | 对应项目--SDK_Auto_Label ## 2. 检测 ### 2.1 单个labelme格式数据集划分、转coco格式 #### labelme_to_coco.py - 将单个文件夹(labelme标注格式)划分、转换为coco格式数据集 - 运行指令 *python labelme_to_coco.py --labelme_dir ./images --save_coco_dir ./coco_dataset* | **参数名** | **数据类型** | **默认值** | **说明** | |-----------------|:--------:|----------------|----------------------------| | --labelme_dir | str | ./images | labelme标注格式数据集路径 | | --save_coco_dir | str | ./coco_dataset | 划分训练集、验证集并转换coco格式数据集保存的路径 | 对应项目--divide_and_convert_to_coco_single_fold ### 2.2 多个labelme格式数据集合并、划分、转coco格式 #### merge_and_divide.py - 合并多个labelme标注格式的文件夹,并划分、转换为coco格式数据集 - 运行指令 *python merge_and_divide.py --anno_dirs ./fold1 ./fold2 --train_ratio 0.8* | **参数名** | **数据类型** | **默认值** | **说明** | |---------------|:--------:|-----------------|-------------| | --anno_dirs | [str] | ./fold1 ./fold2 | 多个文件夹,空格隔开 | | --train_ratio | float | 0.8 | coco格式训练集比例 | 对应项目--merge_and_divide_to_coco_multi_folds ### 2.3 将Labelme导出的json文件转换成Label_Studio导出的json文件 #### Labelme2Lable_Studio.py - 将多个labelme标注的json文件转换成可以导入到Label_Studio的json文件 - 运行指令 *python Labelme2Lable_Studio.py --labelme_dirs ./fold1 ./fold2 --project_id project_id | **参数名** | **数据类型** | **默认值** | **说明** | |---------------|:--------:|-----------------|-------------| | --anno_dirs | [str] | ./fold1 ./fold2 | 多个存储Labelme导出的json文件夹,空格隔开 | | --train_ratio | int | project_id | 对应到Label_Studio的项目编号 | 对应项目--Labelme_LabelStudio ### 2.4 将Label_Studio导出的json文件转换成Labelme导出的json文件 #### Label_Studio2Labelme.py - 将Label_Studio导出的单个json文件转换成Labelme标注格式的json文件 - 运行指令 *python Label_Studio2Labelme.py --Label_Studio_json_dirs ./fold1 ./fold2 --Labelme_json_dir ./fold3 | **参数名** | **数据类型** | **默认值** | **说明** | |---------------|:--------:|-----------------|-------------| | --anno_dirs | [str] | ./fold1 ./fold2 | 多个存储Label_Studio导出的json文件夹,空格隔开 | | --train_ratio | str | ./fold3 | 存放Labelme标注格式的json文件夹 | 对应项目--Labelme_LabelStudio ## 3. 分类 ### 3.1 字体图片生成 #### generate_imgs_by_fonts.py - 根据语料库内容生成对应字体的图片,白底黑字 - 运行指令 *python create_imgs_by_fonts.py --font_dir ./eng_fonts --text_path ./text/eng_text.txt --save_dir ./output* | **参数名** | **数据类型** | **默认值** | **说明** | |-------------|:--------:|----------------------------|----------| | --font_dir | str | ./eng_fonts | 字体文件目录 | | --text_path | str | ./text/eng_text.txt | 语料库文件路径 | | --save_dir | str | ./font_img_dataset/windows | 生成图片保存路径 | 对应项目--fonts_images_generate ### 3.2 语料库生成 #### generate.py - 根据文字字典生成字体分类所需的语料库 - 运行指令 *python generate.py --start 2 --end 30 --step 2 --dict_path ./chn_dict.txt --save_path ./text/text.txt* | **参数名** | **数据类型** | **默认值** | **说明** | |-------------|:--------:|-----------------|-------------| | --start | int | 0 | 生成单句语料的最小长度 | | --end | int | 30 | 生成单句语料的最大长度 | | --step | int | 2 | 单句语料长度的步长 | | --word_num | int | 10 | 单句出现的次数 | | --dict_path | str | ./chn_dict.txt | 文字字典路径 | | --save_path | str | ./text/text.txt | 生成的语料库文件路径 | 对应项目--dictionary_generate ### 3.3 带角度图像生成 #### make_rotated.py - 根据指定的图片,从0度开始以15度为角度增量,生成带旋转角度的图片,缺失部分用白色背景填充 - 然后将生成的图片划分为4类,img_0, img_90, img_180, img_270 - 运行指令 *python make_rotated.py --img_dir ./images --save_dir ./images_rotated* | **参数名** | **数据类型** | **默认值** | **说明** | |------------|:--------:|-------------------|--------------| | --img_dir | str | ./images | 图片文件夹路径 | | --save_dir | str | ./imgages_rotated | 生成的旋转的图片保存路径 | 对应项目--text_image_orientation_dataset_generate ### 3.4 分类数据集划分 #### divide_train_eval.py - 运行指令 *python divide_train_eval.py --img_dir ./windows --train_ratio 0.8* | **参数名** | **数据类型** | **默认值** | **说明** | |---------------|:--------:|----------------------------|-------------| | --img_dir | str | ./font_img_dataset/windows | 待划分的图片文件夹路径 | | --train_ratio | float | 0.8 | 训练集所占比例 | 对应项目--classification_dataset_divide ## 4. OCR相关(对应文件tw_idcard_generator) - 项目结构说明 | **文件名** | **说明** | |------------------------------------|:------------------------------| | bgs | 存放背景图 | | fonts | 存放字体文件 | | materials | 存放各个工具中使用的字典、语料文件 | | cut_save.py | 截取文件夹下所有图片的特定区域并保存 | | dict_generate.py | 生成文字识别需要的字典文件 | | divide_rec_train_val.py | 将文字识别数据集划分成为训练集和验证集 | | get_addr.py | 爬虫获取身份证背面的住址 | | idcard_det_rec_generate_back.py | 生成台湾身份证背面图片 | | idcard_det_rec_generate_forward.py | 生成台湾身份证正面图片,并同时制作正面识别数据集 | | info_generate.py | 信息生成,包括台湾身份证正面的姓名、生日、发证时间,id等 | ### 4.1 文字检测数据集生成(台湾身份证) #### idcard_det_rec_generate_forward.py | **参数名** | **数据类型** | **默认值** | **说明** | |---------------|:--------:|----------------------------|-------------| | --img_dir | str | ./font_img_dataset/windows | 待划分的图片文件夹路径 | | --train_ratio | float | 0.8 | 训练集所占比例 | **以上所述的路径,相对路径、绝对路径均可** *KDAN MOBILE SOFTWARE LTD. all rights reserved*