隐藏文本如何存储在 OCR 增强的 PDF 文件中
How is hidden text stored in OCR-enhanced PDF files
// 编辑 26.03.2018 - 谁想继续我的工作可以看看我的源文件 https://github.com/n0l0cale/ocr-sampledata
我实际上是在寻找有关 PDF 文件的一些详细信息。对我来说最重要的是文件可以使用很长时间,如果可能的话,OCR 应该自动应用于新文件(这似乎不太可能使用 Adobe Acrobat...)。
为此,我一直在寻找不同的解决方案来对我的 PDF 文件进行 OCR。我发现了三个似乎在做他们应该做的事情的候选人……(或多或少)。但是所有三种变体都有其优点和缺点......但是似乎有不同的方法如何在 PDF 文件中存储数据......对于所有三种变体......让我解释一下:
一个用 Adobe Acrobat 进行 OCR 的文件:
https://github.com/n0l0cale/ocr-sampledata/blob/master/A4%20sample_ACROBAT.pdf
生成一个 Acrobat 可以一步打开的文件(没有预加载任何背景层)并且在预检脚本之后我可以看到隐藏存储的文本:
使用 Abby Finereader 进行 OCR 的文件:
https://github.com/n0l0cale/ocr-sampledata/blob/master/A4%20sample_ABBY.pdf
似乎不适合默认的 adobe preflight-script,因为它不显示任何附加层:
但据我所知,这些文件似乎有一个背景文本层,其中包含 OCRed 文本,它是最后显示给用户的图像的底层。不幸的是,这似乎是单独加载的,这在使用 Adobe Acrobat 打开文件时令人困惑...
使用 Tesseract 4 (Alpha) 进行 OCR 的文件:
https://github.com/n0l0cale/ocr-sampledata/blob/master/A4%20sample_TESSERACT_oem2.pdf
也在对隐藏文本部分施展一些奇怪的魔法:
但在所有这三种情况下,我都能够在文件中搜索单词并使用 "Remove hidden information" 查看文本并选择 "hidden text":
我真的很困惑....有谁知道这些程序是如何真正存储它们的隐藏文本信息的?
S.
P.S.: 对于那些想知道这个不祥的预检脚本是什么的人:https://theblog.adobe.com/hidden-gems-in-acrobat-dc-how-to-optimize-hidden-ocr-text/
Does anyone know how these programs are storing their hidden text information really?
您正确地发现 Abby Finereader 的方法不同于 Adobe Acrobat 和 Tesseract:
- Abby 创建一个页面内容流,其中首先在页面上正常绘制文本,最后被扫描图像覆盖。
- Acrobat 和 Tesseract 创建内容流,首先绘制图像,然后不可见地绘制文本(使用不绘制任何内容的文本渲染模式 3)。
后两个结果的区别在于所用字体的选择:
- Acrobat 使用常规的标准 14 种字体,PDF 查看器有一个字体程序可以将它们呈现为普通字形。
- Tesseract 使用字体 GlyphLessFont 它将字体程序嵌入到结果文件中。呈现此字体中的字形时,不会显示为我们正常的拉丁字形,而只是显示为空 space.
考虑到您观察到的 Abby 结果的视觉效果,Acrobat 或 Tesseract 使用的方法可能更可取。
人们是否更喜欢具有视觉可识别字形(如 Acrobat 使用)或不具有(如 Tesseract 使用)的字体,主要只是一个品味问题。无论如何,它们仅在不可见渲染模式下使用。
// 编辑 26.03.2018 - 谁想继续我的工作可以看看我的源文件 https://github.com/n0l0cale/ocr-sampledata
我实际上是在寻找有关 PDF 文件的一些详细信息。对我来说最重要的是文件可以使用很长时间,如果可能的话,OCR 应该自动应用于新文件(这似乎不太可能使用 Adobe Acrobat...)。
为此,我一直在寻找不同的解决方案来对我的 PDF 文件进行 OCR。我发现了三个似乎在做他们应该做的事情的候选人……(或多或少)。但是所有三种变体都有其优点和缺点......但是似乎有不同的方法如何在 PDF 文件中存储数据......对于所有三种变体......让我解释一下:
一个用 Adobe Acrobat 进行 OCR 的文件:
https://github.com/n0l0cale/ocr-sampledata/blob/master/A4%20sample_ACROBAT.pdf
生成一个 Acrobat 可以一步打开的文件(没有预加载任何背景层)并且在预检脚本之后我可以看到隐藏存储的文本:
使用 Abby Finereader 进行 OCR 的文件:
https://github.com/n0l0cale/ocr-sampledata/blob/master/A4%20sample_ABBY.pdf
似乎不适合默认的 adobe preflight-script,因为它不显示任何附加层:
但据我所知,这些文件似乎有一个背景文本层,其中包含 OCRed 文本,它是最后显示给用户的图像的底层。不幸的是,这似乎是单独加载的,这在使用 Adobe Acrobat 打开文件时令人困惑...
使用 Tesseract 4 (Alpha) 进行 OCR 的文件:
https://github.com/n0l0cale/ocr-sampledata/blob/master/A4%20sample_TESSERACT_oem2.pdf
也在对隐藏文本部分施展一些奇怪的魔法:
但在所有这三种情况下,我都能够在文件中搜索单词并使用 "Remove hidden information" 查看文本并选择 "hidden text":
我真的很困惑....有谁知道这些程序是如何真正存储它们的隐藏文本信息的?
S.
P.S.: 对于那些想知道这个不祥的预检脚本是什么的人:https://theblog.adobe.com/hidden-gems-in-acrobat-dc-how-to-optimize-hidden-ocr-text/
Does anyone know how these programs are storing their hidden text information really?
您正确地发现 Abby Finereader 的方法不同于 Adobe Acrobat 和 Tesseract:
- Abby 创建一个页面内容流,其中首先在页面上正常绘制文本,最后被扫描图像覆盖。
- Acrobat 和 Tesseract 创建内容流,首先绘制图像,然后不可见地绘制文本(使用不绘制任何内容的文本渲染模式 3)。
后两个结果的区别在于所用字体的选择:
- Acrobat 使用常规的标准 14 种字体,PDF 查看器有一个字体程序可以将它们呈现为普通字形。
- Tesseract 使用字体 GlyphLessFont 它将字体程序嵌入到结果文件中。呈现此字体中的字形时,不会显示为我们正常的拉丁字形,而只是显示为空 space.
考虑到您观察到的 Abby 结果的视觉效果,Acrobat 或 Tesseract 使用的方法可能更可取。
人们是否更喜欢具有视觉可识别字形(如 Acrobat 使用)或不具有(如 Tesseract 使用)的字体,主要只是一个品味问题。无论如何,它们仅在不可见渲染模式下使用。