我正在使用生成 PDF-1.3 的 ScanSnap 扫描仪,当在 Adobe Reader 中查看 PDF 时,它将自动更正扫描文档的方向(旋转 0 或 180 度)。OCR 由扫描软件完成,我假设然后确定方向并编码到 PDF 中。
请注意,我知道我可以使用 Tesseract 或其他 OCR 工具来确定是否需要旋转,但我不想使用它,因为扫描仪软件似乎已经确定了它并告诉 PDF 查看器是否需要(或不需要)旋转。
当我使用图像提取工具(如 xpdf pdfimages、python 库)时,它不能正确地将 jpeg 图像旋转 180 度(如果需要)。
注意:pdfimages 从 PDF 文件中提取原始图像数据,而不执行任何额外的转换。由 PDF 内容流完成的任何旋转、剪切、颜色反转等都将被忽略。
我已经旋转扫描了两次文档(0 度和 180 度)。我似乎无法逆向工程告诉 Adobe/Foxit 在查看时旋转(或不旋转)图像。我查看了 PDF-1.3 规范文档,并比较了方向校正和未校正的 PDF 二进制数据。我无法确定是什么在纠正方向?
- PDF 中没有 /Page/Rotate(默认为 0)
- JPEG 中没有 EXIF 方向
- 我在 PDF 中看不到任何转换矩阵(cm 运算符)
在这两种情况下,PDF 二进制文件如下所示(在 JPEG 流数据处停止)
%PDF-1.3
%âãÏÓ
1 0 obj
<</Metadata 20 0 R/Pages 2 0 R/Type/Catalog>>
endobj
2 0 obj
<</MediaBox[0.0 0.0 606.6 794.88]/Count 1/Type/Pages/Kids[4 0 R]>>
endobj
4 0 obj
<</Parent 2 0 R/Contents 18 0 R/PieceInfo<</PSL<</Private<</V(3.2.9)>>/LastModified(D:20190201125524-00'00')>>>>/MediaBox[0.0 0.0 606.6 794.88]/Resources<</XObject<</Im0 5 0 R>>/Font<</C0_0 11 0 R/T1_0 16 0 R>>/ProcSet[/PDF/Text/ImageC]>>/Type/Page/LastModified(D:20190201085524-04'00')>>
endobj
5 0 obj
<</Subtype/Image/Length 433576/Filter/DCTDecode/Name/X/BitsPerComponent 8/ColorSpace/DeviceRGB/Width 1685/Height 2208/Type/XObject>>stream
有谁知道PDF查看器如何知道将图像旋转180(或不旋转)。是否可以提取 PDF 或 JPEG 图像中的元数据?Adobe 和其他查看器是否会在打开文档时动态执行某些操作以确定是否需要方向校正?
我不是 PDF 规范方面的专家。但我希望有人可能已经找到了解决这个问题的方法。