gpt4 book ai didi

algorithm - 检测扫描文档中的空白页

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:18:28 24 4
gpt4 key购买 nike

因此我们需要检测扫描仪创建的图像是否表示空白页面。在图像处理方面我力不从心,所以我必须由社区来运行它。

这是我到目前为止的想法:

  • 空白页面可以是耀眼的白色、灰色再生纸或泛黄的旧纸。目前的想法是为页面创建一个直方图,寻找曲线的陡峭增加,并获得比它更暗的像素百分比。如果超过阈值,则该页面可能不为空。

  • 由于这可能会将顶部包含单行文本的页面归类为空页面,因此我们会平铺页面并收集有关每个平铺的统计信息。

  • 我们需要检测扫描的订书机和装订孔(可能只在某些图 block 中),但这可以推迟到以后的某个阶段。但是,如果您知道除了这两个之外还需要注意什么,请在评论中提及。

  • 这需要很快。它是每天处理(数万)数千页的文档处理工作流程的一部分。如果处理一个页面需要多花十秒钟,那么我们的客户将不得不告诉他们的客户他们需要多等几天才能得到结果。 (如果这导致更多的误报,一些客户宁愿让别人检查几十个发现的“空”页面,也不愿让他们的客户多等一天。)

所以这是我的问题:

  1. 走这条路线是个好主意还是有更好的办法?

  2. 如果我们这样做,我会怎么做?查找页面阈值的好(便宜)算法是什么?我们能否通过对一批文档假设类似的阈值来显着提高速度?在记录之前,亮度值可以四舍五入到什么精度?我们可以期待什么怪癖?

最佳答案

如果您知道扫描的页面将完全填满图像,那么计算标准差可能是一个很好的方法。

我建议稍微模糊页面以减少一些噪音。然后计算页面的标准差,理论上,一个页面或多或少都是一种颜色的标准差较低,而文本较多的页面标准差较高。然后是“训练”系统计算出页面何时为纯文本和何时为文本的情况。您可能会发现它很难分辨某些页面。

你可以通过让它处理大量页面来训练它,它会遍历所有页面,然后你说它是否简单。

编辑

好吧,如果我们只有页面而没有周围的东西,那么一个带有黑色文本的白页将具有灰色的平均颜色,可能是相当浅的灰色。获取平均值是一个 for 循环遍历所有像素,将它们的值相加,然后除以像素数。我不擅长这个 o(logN) 的东西,但我只想说,它不会那么长。除非你有巨大的图像。

SD是第二次for循环,这次我们是统计每个像素与均值的差值,然后除以均值。这将比平均值花费更长的时间,因为我们必须做类似的事情

diff = thispixel - mean;
if(diff < 0) {
diff = -diff;
}
runningTotal += diff;

对于纯色页面,每个像素都将接近平均值,因此我们的 SD 会很低。如果 SD 低于某个值,我们可以假设这意味着页面都是一种颜色。

如果文本量非常少,这可能会有问题,因为它不会对 SD 产生很大影响,所以也许就像您在问题中建议的那样,将页面分成几个部分。我建议水平 strip ,因为文本往往是这样的。如果我们一次一个地做这些 strip 之一,一旦一个 strip 表明它有文本,我们就可以停止,因为我们不关心其余部分是否为空白。

模糊页面有助于减少噪音,因为噪音的奇数像素会降低其影响,从而为您提供“更紧凑”的标清。您还可以使用它来降低图像的分辨率。

假设您的图片是 300 宽 x 900 高,您可以以 9 个像素为一组进行采样,3 * 3,因此最终得到一个 100 宽 x 300 高的图像,所以它实际上可以用来减少您需要进行的计算量,在本例中为九分之一!

主要的问题是计算出只有一个普通页面的 SD 可以达到多高。也许让它找到一堆空白页的 SD。

听上去,您可能想要一个中间立场,让它变得不确定并要求人为干预,可能让人类值(value)训练系统变得更好?

关于algorithm - 检测扫描文档中的空白页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5245785/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com