• python 读取pdf 将每页转成jpg


    需要安装fitz

    pip install PyMuPDF

    这里我发现了问题,默认安装最新版本1.21.x 但是不支持大部分网上的api 所以分开两部分

    1.21.x的

    1. import fitz # PyMuPDF
    2. from PIL import Image
    3. def extract_images_from_tiff(tiff_path, output_folder):
    4. # 打开 TIFF 文件
    5. pdf_document = fitz.open(tiff_path)
    6. # 遍历每个页面
    7. for page_number in range(pdf_document.page_count):
    8. # 获取页面
    9. page = pdf_document[page_number]
    10. # 获取像素图
    11. pixmap = page.get_pixmap()
    12. # 将像素图数据转为 PIL Image 对象
    13. pil_image = Image.frombytes("RGB", (pixmap.width, pixmap.height), pixmap.samples)
    14. # 保存为 JPG 格式
    15. jpg_file_path = f"{output_folder}/page_{page_number + 1}.jpg"
    16. pil_image.save(jpg_file_path, "JPEG")
    17. # 关闭 PDF 文件
    18. pdf_document.close()
    19. # 示例用法
    20. tiff_file_path = "./data/ISC-1226/02-121665-PB.tif"
    21. output_folder_path = "./tif_output"
    22. extract_images_from_tiff(tiff_file_path, output_folder_path)

    1.18.0的代码

    1. import os
    2. import fitz #pip install PyMuPDF
    3. def pyMuPDF_fitz(pdfPath, imagePath):
    4. pdfDoc = fitz.open(pdfPath)
    5. for pg in range(pdfDoc.pageCount):
    6. page = pdfDoc[pg]
    7. rotate = int(0)
    8. # 每个尺寸的缩放系数为1.3,这将为我们生成分辨率提高2.6的图像。
    9. # 此处若是不做设置,默认图片大小为:792X612, dpi=96
    10. zoom_x = 1.33333333 # (1.33333333-->1056x816) (2-->1584x1224)
    11. zoom_y = 1.33333333
    12. mat = fitz.Matrix(zoom_x, zoom_y).preRotate(rotate)
    13. pix = page.getPixmap(matrix=mat, alpha=False)
    14. if not os.path.exists(imagePath): # 判断存放图片的文件夹是否存在
    15. os.makedirs(imagePath) # 若图片文件夹不存在就创建
    16. pix.writePNG(imagePath + '/' + 'images_%s.png' % pg) # 将图片写入指定的文件夹内
    17. print('pdf2img时间=', (endTime_pdf2img - startTime_pdf2img).seconds)
    18. if __name__ == "__main__":
    19. # 1、PDF地址
    20. pdfPath = r"E:\Git\ImageOcr\data\kana\pdf\20240211450000.pdf"
    21. # 2、需要储存图片的目录
    22. imagePath = './data/kana/img/20240211450000'
    23. pyMuPDF_fitz(pdfPath, imagePath)

    总结,建议使用1.18的版本,可以更改dpi,1.20以上的版本 我没研究api改成啥了

  • 相关阅读:
    SQL第三次上机作业
    开源联合、聚力共赢丨2023 CCF中国开源大会10月开幕
    浅谈ClickHouse安全性和权限管理
    含文档+PPT+源码等]精品微信小程序springboot服装企业人事管理系统+后台管理系统[包运行成功]Java毕业设计SSM项目源码
    微服务分布式开源架构是什么?
    SCT2330CTVBR
    四面阿里巴巴回来分享面经总结,定级P7架构师
    Docker安装部署RabbitMq
    [2]SpinalHDL教程——Scala简单入门
    LeetCode 10. 正则表达式匹配
  • 原文地址:https://blog.csdn.net/gc889900/article/details/136699062