你的问题有点混乱,所以我不确定最能帮助你的是什么 . 但是,您描述了两种从OCR“隐藏”文本的方法 . 我认为两者都是可以检测的,但一个比另一个容易得多 .
Hidden text
隐藏文本是放在其他内容后面的常规或不可见文本 . 换句话说,您使用对象的堆叠顺序来隐藏其中的一些 . 你可以检测到这种情况的唯一方法是找出页面上所有文本对象的位置(计算它们的边界框不是微不足道但当然可能),然后确定页面上的任何图像是否重叠那个文本就在它面前 . 一些额外的评论:
理论上它可能不是隐藏它的图像,但在你的OCR情况下,我猜它总是一个图像 .
虽然图像可能与图像重叠,但它在某些方面也可能是透明的 . 在这种情况下,下面的文字可能仍然闪耀 . 在你的普通OCR引擎的情况下,可能不太可能 .
Invisible text
PDF支持不可见的文本 . 更准确地说,PDF支持不同的文本渲染模式;这些渲染模式确定字符是填充,轮廓,填充轮廓还是不可见(还有其他可能性) . 在您发布的PDF文件中,您会找到以下片段:
BT
3 Tr
0.00 Tc
/F3 8.5 Tf
1 0 0 1 42.48 762.96 Tm
(Chicken ) Tj
那是一只看不见的鸡!指令“3 Tr”将文本呈现模式设置为“3”,其等于“不可见”或“既不抚摸也不填充”,因为PDF规范非常优雅地说明了它 .
值得一提的是,这两种技术可以被OCR引擎互换使用 . 将不可见文本放在扫描图像的顶部实际上是很好的做法,因为这意味着大多数PDF查看器都允许您选择文本 . 如果文本位于图像“后面”,我在某些时候查看的某些PDF查看器不允许选择文本 .