- 2024.11.15
- 完成初版代码,转换 UVDoc 模型为onnx,完善前后处理
- 2024.12.15
- 补充去模糊/去阴影/二值化的功能和模型,重新升级为 RapidUndistort
本仓库用于进行文档扭曲的修正/文档去模糊/文档去阴影/文档二值化等问题 \
提供多种模型和自由组合选择task,支持模型自动下载
原始pytorch模型来源参考 致谢
快速使用 使用建议 参数说明 模型地址
# 建议使用清华源安装 https://pypi.tuna.tsinghua.edu.cn/simple
pip install rapid-undistorted
import cv2
from rapid_undistorted.inference import InferenceEngine
img_path = "img/demo.jpg"
engine = InferenceEngine()
# 扭曲修正->去阴影->去模糊 (指定去模糊模型)
output_img, elapse = engine(img_path, ["unwrap", "unshadow", ("unblur", "OpenCvBilateral")])
# 去阴影->去模糊 (指定去模糊模型)
#output_img, elapse = engine(img_path, ["unshadow", ("unblur", "OpenCvBilateral")])
# 默认选择yaml配置文件中第一个unblur模型
#output_img, elapse = engine(img_path, ["unshadow", "unblur"])
# 二值化替代去阴影方法
#output_img, elapse = engine(img_path, ["unwrap", "binarize", "unblur"])
print(f"doc unwrap elapse:{elapse}")
cv2.imwrite("result.png", output_img)
- 去模糊 NAFDPM 模型和直接使用opencv方法都有适用的情况,最好还是在线实际测试为准
- 去阴影模型相对于二值化功能更丰富,效果更好,不建议直接使用二值化方法
支持传入一个config配置文件,声明需要的task类型和对应的模型,以及model path
config_path = "configs/config.yaml"
engine = InferenceEngine(config_path)
tasks:
unwrap:
models:
- type: "UVDoc"
path:
use_cuda: false
unshadow:
models:
- type: "GCDnet"
sub_models:
- type: "GCDnet"
path:
use_cuda: false
use_dml: false
- type: "DRnet"
path:
use_cuda: false
binarize:
models:
- type: "UnetCnn"
path:
use_cuda: false
unblur:
models:
- type: "OpenCvBilateral"
path:
- type: "NAFDPM"
path:
use_cuda: false
engine(img_path, task_list)
engine(img_path, ["unwrap", "unshadow", ("unblur", "OpenCvBilateral")])
unwrap: UVDoc unshadow: GCDnet unblur: NAFDPM binarize: UnetCnn
欢迎提交请求。对于重大更改,请先打开issue讨论您想要改变的内容。
有其他的好建议和集成场景,作者也会积极响应支持
该项目采用Apache 2.0 开源许可证。