首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyMuPDF中的页面定向

PyMuPDF中的页面定向
EN

Stack Overflow用户
提问于 2022-01-12 04:21:27
回答 1查看 684关注 0票数 2

我正在尝试从一些Pdfs中提取文本。为此,我在Python中使用PyMuPDF库(1.19.2)。然而,我有一些困难,了解页面和图片的方向在Pdfs中。当我在Adobe阅读器中查看PDF时,页面会以正确的方向出现。但是,当我使用下面的代码检查Python中的页面旋转时,会得到270的旋转。

代码语言:javascript
复制
doc = fitz.open(document_name)
doc[0].rotation

现在,当我使用以下代码从页面中提取嵌入式图像时

代码语言:javascript
复制
import PIL
from io import BytesIO
img = doc[0].get_images()
image = PIL.Image.open(BytesIO(doc.extract_image(img[0][0])['image']))

我得到的图像是旋转的,与我上面获得的页面旋转一致。图像如下所示

但是,如果我使用以下代码提取页面的像素映射

代码语言:javascript
复制
PIL.Image.open(BytesIO(page.get_pixmap().tobytes()))

页面显示在同样出现在Adobe阅读器中的方向中,而不是嵌入图像的方向或上面返回的旋转值。这张图片如下所示

我的问题是,旋转值意味着什么?如何确保从PDF中提取正确的定向图像和页面?

EN

回答 1

Stack Overflow用户

发布于 2022-08-01 07:20:14

理解pymupdf中的旋转的第一个关键是在下面的文档代码片段中找到的。

代码语言:javascript
复制
>>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)

因此,未旋转视图中的左上角点已经根据旋转矩阵移动到左下角。

现在,关于不同功能在输出上的差异,

  • 默认情况下,像素映射是使用from页面矩形,即旋转(参考)生成的。
  • 在extract_image中,引用用于生成正在提取的图像。您可以研究这个映像的细节,即它通过运行以下命令:fitz.image_profile(doc.xref_stream_raw(xref))所经历的转换。在您的例子中,xref由img提供。您感兴趣的属性是定向和转换(参考)。

此外,阅读图像变换矩阵上的附录可能会进一步帮助您。

希望这有助于理解旋转是如何工作的,因此,如何使用所需的旋转提取图像(提示:在执行操作之前使用旋转或设置旋转进行检查)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70676283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档