python PDF 转 图片

python PDF 转 图片 fitz库

代码

import fitz
import time
import re
import os
def pdf2image(pdf_path):   
    '''
    # 从pdf中提取图片
    :param path: pdf的路径
    :param pic_path: 图片保存的路径
    :return:
    '''
    # 生成图片初始时间
    t0 = time.clock()
    # 使用正则表达式来查找图片
    checkXO = r"/Type(?= */XObject)" 
    checkIM = r"/Subtype(?= */Image)"  
    # 打开pdf
    doc = fitz.open(pdf_path)
    # 图片计数
    imgcount = 0
    lenXREF = doc._getXrefLength()
    # 打印PDF的信息
    print("pdf路径:{}, 页数: {}, 对象: {}".format(pdf_path, len(doc), lenXREF - 1))
    # 遍历每一个对象
    for i in range(1, lenXREF):
        # 定义对象字符串
        text = doc._getXrefString(i)
        isXObject = re.search(checkXO, text)
        # 使用正则表达式查看是否是图片
        isImage = re.search(checkIM, text)
        # 如果不是对象也不是图片,则continue
        if not isXObject or not isImage:
            continue
        imgcount += 1
        # 根据索引生成图像
        pix = fitz.Pixmap(doc, i)
        # 根据pdf的路径生成图片的名称
    #     new_name = path.replace('\\', '-') + "_img{}.png".format(imgcount)
        png_path = pdf_path.replace("pdf","png")
        print("图片路径:",png_path)
        # 如果pix.n<5,可以直接存为PNG
        if pix.n < 5:
            pix.writePNG(png_path)
        # 否则先转换CMYK
        else:
            pix0 = fitz.Pixmap(fitz.csRGB, pix)
            pix0.writePNG(png_path)
            pix0 = None
        # 释放资源
        pix = None
        t1 = time.clock()
        print("运行时间:{}s".format(t1 - t0))
        print("提取了{}张图片".format(imgcount))
        return png_path
    if __name__ == '__main__':
    # pdf_path:pdf文件路径
    pdf_path = r"C:\Users\xiahuadong\Desktop\PDF文字矫正代码\20200310c国发\20200310c国发0007.pdf"
    pdf2image(pdf_path)    
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页