我正在尝试从一些Pdfs中提取文本。为此,我在Python中使用PyMuPDF库(1.19.2)。然而,我有一些困难,了解页面和图片的方向在Pdfs中。当我在Adobe阅读器中查看PDF时,页面会以正确的方向出现。但是,当我使用下面的代码检查Python中的页面旋转时,会得到270的旋转。
doc = fitz.open(document_name)
doc[0].rotation现在,当我使用以下代码从页面中提取嵌入式图像时
import PIL
from io import BytesIO
img = doc[0].get_images()
image = PIL.Image.open(BytesIO(doc.extract_image(img[0][0])['image']))我得到的图像是旋转的,与我上面获得的页面旋转一致。图像如下所示

但是,如果我使用以下代码提取页面的像素映射
PIL.Image.open(BytesIO(page.get_pixmap().tobytes()))页面显示在同样出现在Adobe阅读器中的方向中,而不是嵌入图像的方向或上面返回的旋转值。这张图片如下所示

我的问题是,旋转值意味着什么?如何确保从PDF中提取正确的定向图像和页面?
发布于 2022-08-01 07:20:14
理解pymupdf中的旋转的第一个关键是在下面的文档代码片段中找到的。
>>page.set_rotation(90) # rotate an ISO A4 page
>>page.rect
Rect(0.0, 0.0, 842.0, 595.0)
>>p = fitz.Point(0, 0) # where did top-left point land?
>>p * page.rotation_matrix
Point(842.0, 0.0)因此,未旋转视图中的左上角点已经根据旋转矩阵移动到左下角。
现在,关于不同功能在输出上的差异,
fitz.image_profile(doc.xref_stream_raw(xref))所经历的转换。在您的例子中,xref由img提供。您感兴趣的属性是定向和转换(参考)。此外,阅读图像变换矩阵上的附录可能会进一步帮助您。
希望这有助于理解旋转是如何工作的,因此,如何使用所需的旋转提取图像(提示:在执行操作之前使用旋转或设置旋转进行检查)。
https://stackoverflow.com/questions/70676283
复制相似问题