需要安装fitz
pip install PyMuPDF
这里我发现了问题,默认安装最新版本1.21.x 但是不支持大部分网上的api 所以分开两部分
1.21.x的
- import fitz # PyMuPDF
- from PIL import Image
-
- def extract_images_from_tiff(tiff_path, output_folder):
- # 打开 TIFF 文件
- pdf_document = fitz.open(tiff_path)
-
- # 遍历每个页面
- for page_number in range(pdf_document.page_count):
- # 获取页面
- page = pdf_document[page_number]
-
- # 获取像素图
- pixmap = page.get_pixmap()
-
- # 将像素图数据转为 PIL Image 对象
- pil_image = Image.frombytes("RGB", (pixmap.width, pixmap.height), pixmap.samples)
-
- # 保存为 JPG 格式
- jpg_file_path = f"{output_folder}/page_{page_number + 1}.jpg"
- pil_image.save(jpg_file_path, "JPEG")
-
- # 关闭 PDF 文件
- pdf_document.close()
-
- # 示例用法
- tiff_file_path = "./data/ISC-1226/02-121665-PB.tif"
- output_folder_path = "./tif_output"
- extract_images_from_tiff(tiff_file_path, output_folder_path)
1.18.0的代码
-
- import os
-
- import fitz #pip install PyMuPDF
-
-
- def pyMuPDF_fitz(pdfPath, imagePath):
-
- pdfDoc = fitz.open(pdfPath)
- for pg in range(pdfDoc.pageCount):
- page = pdfDoc[pg]
- rotate = int(0)
- # 每个尺寸的缩放系数为1.3,这将为我们生成分辨率提高2.6的图像。
- # 此处若是不做设置,默认图片大小为:792X612, dpi=96
- zoom_x = 1.33333333 # (1.33333333-->1056x816) (2-->1584x1224)
- zoom_y = 1.33333333
- mat = fitz.Matrix(zoom_x, zoom_y).preRotate(rotate)
- pix = page.getPixmap(matrix=mat, alpha=False)
-
- if not os.path.exists(imagePath): # 判断存放图片的文件夹是否存在
- os.makedirs(imagePath) # 若图片文件夹不存在就创建
-
- pix.writePNG(imagePath + '/' + 'images_%s.png' % pg) # 将图片写入指定的文件夹内
-
- print('pdf2img时间=', (endTime_pdf2img - startTime_pdf2img).seconds)
-
-
- if __name__ == "__main__":
- # 1、PDF地址
- pdfPath = r"E:\Git\ImageOcr\data\kana\pdf\20240211450000.pdf"
-
- # 2、需要储存图片的目录
- imagePath = './data/kana/img/20240211450000'
- pyMuPDF_fitz(pdfPath, imagePath)
-
总结,建议使用1.18的版本,可以更改dpi,1.20以上的版本 我没研究api改成啥了