我有一个背景有水印的pdf 。当开始扫描以在背景中突出显示带有水印或注释的任何单词时,将被选中,因为它首先在触摸区域中找到。
我正在使用 CGPDFScanner 来扫描文本。
我的问题是如何检测扫描的文本是背景文本还是 PDF 中的真实文本?如何区分标准文本和注释文本?
谢谢。
我有一个背景有水印的pdf 。当开始扫描以在背景中突出显示带有水印或注释的任何单词时,将被选中,因为它首先在触摸区域中找到。
我正在使用 CGPDFScanner 来扫描文本。
我的问题是如何检测扫描的文本是背景文本还是 PDF 中的真实文本?如何区分标准文本和注释文本?
谢谢。
通常,您没有机会可靠地区分“背景”和“真实”文本。文本以某种顺序绘制在页面上的某处,而前景、背景、普通文本……是人类感知的问题,可能根本不会反映在 PDF 内容流的结构中。
您可以尝试一些有根据的猜测,例如假设“真实”文本颜色较深,而背景文本颜色较浅,或者“真实”文本以水平线排列,而背景文本通常更斜,等等。但这是猜测毕竟,没有什么可依赖的。
另一方面,如果您可能有机会标记 PDF,水印可能会被标记为工件数据。
PS我刚刚看到你再次分享了你的文件。在您的文档中,我提到的启发式方法会起作用,背景文本是灰色的并且是对角线打印的。
因此,在扫描时,您必须跟踪填充颜色和/或转换矩阵。一旦扫描仪找到文本,您就可以根据当前颜色和/或矩阵值知道它是背景还是前景。
但是请注意,所有文档都不是那么容易。