【问题标题】:How to detect a rotated page in a PDF document in Python?如何在 Python 中检测 PDF 文档中的旋转页面?
【发布时间】:2015-12-29 17:11:18
【问题描述】:

给定一个包含多个页面的 PDF 文档,如何检查给定页面是否旋转(-90、90 或 180º)?最好使用 Python (pdfminer, pyPDF) ...

更新:页面被扫描,大部分页面由文本组成。

【问题讨论】:

  • 有什么你尝试过的细节吗?
  • pdfminer 中的类 PDFPage 有一个rotate 属性。
  • @NunoAndré,PDFPage.rotate 仅在使用某些指定工具旋转单页时才有效,我正在寻找一种从扫描仪中检测到这一点的方法。 (风景/肖像)
  • 在考虑旋转整个页面之前必须旋转多少文本?
  • 扫描文本 == OCR。看看pypdfocr

标签: python pdf image-processing pypdf pdfminer


【解决方案1】:

我只是在PyPDF2中使用了页面的/Rotate属性:

 pdf = PyPDF2.PdfFileReader(open('example.pdf', 'rb'))
 orientation = pdf.getPage(pagenumber).get('/Rotate')

可以是090180270None

【讨论】:

  • 我知道这是一个旧帖子,但他为什么能工作?显然可以(我正在使用它),但是当我查看 PageObject Class 文档pythonhosted.org/PyPDF2/PageObject.html#PyPDF2.pdf.PageObject 时,此页面上没有任何内容称为“旋转”。我怎么知道这是一个可用参数,我怎么知道其他可用参数是什么? --- 谢谢
  • 我认为 PageObject(作为 dict)包含页面的所有原始属性,例如“/Parent”、“/MediaBox”以及 PDF 参考 7.7.3.3 中描述的所有此类内容
  • 我无法让它在不可编辑的 pdf 中工作,但有人注意到这个问题吗?
【解决方案2】:

如果您使用的是pdfminer,则可以通过调用PDFPage 实例的.rotate 属性来获取轮换。

for page in PDFPage.create_pages(doc):
    interpreter.process_page(page)
    r = page.rotate

【讨论】:

    【解决方案3】:

    如果您使用 PDFMiner 并希望按每页显示方向:

    from pdfminer.pdfpage import PDFPage
    from io import StringIO
    from pdfminer.pdfparser import PDFParser
    from pdfminer.pdfdocument import PDFDocument
    from pdfminer.pdfpage import PDFPage
    from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
    from pdfminer.converter import TextConverter
    from pdfminer.layout import LAParams
    
    output_string = StringIO()
    resource_manager = PDFResourceManager()
    device = TextConverter(resource_manager, output_string, 
    laparams=LAParams())
    interpreter = PDFPageInterpreter(resource_manager, device)
    
    for page in PDFPage.get_pages(open('sample.pdf', 'rb')):
        interpreter.process_page(page)
    
        if page.mediabox[2] - page.mediabox[0] > page.mediabox[3] - page.mediabox[1]:
            orientation = 'Landscape'
        else:
            orientation = 'Portrait'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-14
      • 2022-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多