项目简介
Augraphy 是一个强大的 Python 库,用于通过增强管道创建原始文档的多个副本。这个管道会随机扭曲每个副本,将干净版本的文档降级为通过合成纸打印、传真、扫描和复印机过程呈现的脏或现实版本。这个库极具可配置性,可以应用各种调整,将原始文档转化为仿古或噪声文档。本质上,Augraphy 就是一个“工厂”,可以从源文档中产生几乎无限量的变体。这种纸张过程的模拟能够产生大量的训练数据,便于人工智能/机器学习算法学习如何去除这些失真效果。
为什么选择 Augraphy?
市面上几乎没有现成的数据集可供同时拥有干净和噪声版本的目标文档使用。Augraphy 解决了这个问题,可以制造大量高质量的噪声文档供训练使用。训练神经网络往往需要增强有限数据资源,以便网络学会解决问题的广泛性。设计用于处理扫描文档图像的网络,必须得到具有真实世界中扫描文档典型失真和噪声的训练图像。
然而,如果我们仅拥有现实中脏的文档,则在训练神经网络时无法很好地测试它是否能正确还原。通过逆向思维,从我们希望训练网络生成的干净文档着手,Augraphy 能够提供模拟的脏文档数据来训练,同时精准保留原始文档。这实际上是一种“魔法”,能引导模型去逆转所有失真并还原文档到其原始形式。
工作原理
Augraphy 的增强管道从一个干净文档的图像开始,首先将源文件中的文本和图形提取为一个“墨水”层(在 Augraphy 中,墨水与碳粉是同义词)。然后,增强管道开始扭曲和降级“墨水”层。
一个“纸厂”会提供一张白纸或随机选择的纸张纹理。然而,如同墨水层,纸张也可以通过管道处理,进一步提供现实的纸张纹理效果。
完成墨水和纸张阶段后,将墨水连同其效果应用到纸上。合并后的文档图像会进一步被增强处理,比如添加折痕或其他依赖于纸张与墨水同时相互作用的物理变形或失真。最终结果是一张模拟真实文档的图像。
使用示例
Augraphy 提供了一个默认的增强管道,包含所有可用的增强功能以及合理的默认值。以下是一个简单的使用示例:
from augraphy import *
pipeline = default_augraphy_pipeline()
image = cv2.imread("image.png")
augmented = pipeline(image)
执行上面的代码后,augmented
就是一个经过处理后的图像,模拟了现实世界中的文档效果。
Augraphy 的设计理念在于协助实现文件图像自动化问题的解决方案,比如 OCR(光学字符识别)、表单识别、数据提取、文档分类等。最终,Augraphy 将会支持模拟手机摄像头失真的增强功能,进一步扩展其应用领域。
总结
Augraphy 是一本真正致力于纸张处理问题的增强库。尽管市面上有许多其他的增强库,但 Augraphy 独特地解决了日常办公自动化中涉及的文档失真挑战,为文档图像问题提供专注的解决方案。对于希望在文档处理领域获得逼真数据集的研究人员和开发者来说,Augraphy 是一个不可多得的利器。