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