基于python 图片型pdf转化为图片,并提取文字

首先要安装两个库,分别是pymupdf、fitz、cnocr。

然后介绍一个使用的函数help,因为版本的问题,网上找的很多问题,如果因为版本问题,导致函数不可用,可使用help函数查找该数据类型的用法,具体可参考代码中的用法。

第一步:将pdf转化为图片,话不多说,上码:

def pyMuPDF_fitz(pdfPath, imagePath):

# startTime_pdf2img = datetime.datetime.now()  # 开始时间

    pdfDoc = fitz.open(pdfPath)

print(help(pdfDoc))

# 函数改变 pageCount变为page_count

    for pgin range(2,pdfDoc.page_count):

page = pdfDoc[pg]

rotate =int(0)

# 此处若是不做设置,默认图片大小为:792X612, dpi=72 我扫描的文件是200dpi

        # 每个尺寸的缩放系数为1.3,这将为我们生成分辨率提高2.6的图像。

        zoom_x =4 # (1.33333333-->1056x816)  (2-->1584x1224)

        zoom_y =4

        # print(help(fitz.Matrix(zoom_x, zoom_y)))

        # 函数改变 preRotate变为prerotate

        mat = fitz.Matrix(zoom_x, zoom_y).prerotate(rotate)

pix = page.get_pixmap(matrix=mat, alpha=False)

if not os.path.exists(imagePath):# 判断存放图片的文件夹是否存在

            os.makedirs(imagePath)# 若图片文件夹不存在就创建

        # pix.writePNG(imagePath + '/' + 'images_%s.png' % (pg + 1))

        pix.save(imagePath +'/' +'images_%s.png' % (pg +1))# 将图片写入指定的文件夹内

    # endTime_pdf2img = datetime.datetime.now()  # 结束时间

    # print('pdf2img时间=', (endTime_pdf2img - startTime_pdf2img).seconds)

    return pdfDoc.page_count-2

第二步将image转化为文字:

ocr = CnOcr()

n =0

f =open(outfile, 'a', encoding='utf-8')

for nin range(2,pages):

i =0

    name = filepath+'/' +'images_%s.png' % (n +1)

res = ocr.ocr(name)

# string_list = []

    for iin range(len(res)):

f.write(res[i][0] +"\n")

f.close()

你可能感兴趣的:(基于python 图片型pdf转化为图片,并提取文字)