美文网首页
python处理pdf保存为图片并识别

python处理pdf保存为图片并识别

作者: 金融非耐斯 | 来源:发表于2023-03-30 11:09 被阅读0次

    pdf的试卷,识别不了,先转换成图片,再识别输出

    # -*- coding: utf-8 -*-
    import fitz
    import traceback
    import datetime
    import os
    import glob
    # 处理图片
    import pytesseract
    from PIL import Image
    
    def pyMuPDF_fitz(pdfPath, imagePath, count):
        print("pdfPath=" + pdfPath)
        print("imagePath=" + imagePath)
        pdfDoc = fitz.open(pdfPath)
        for pg in range(pdfDoc.page_count):
            page = pdfDoc[pg]
            rotate = int(0)
            zoom_x = 4  
            zoom_y = 4
            mat = fitz.Matrix(zoom_x, zoom_y).prerotate(rotate)
            rect = page.rect
            clip = fitz.Rect(rect.tl + 15, rect.br - 13)
            pix = page.get_pixmap(matrix=mat, alpha=False, clip=clip)
     
            if not os.path.exists(imagePath):  # 判断存放图片的文件夹是否存在
                os.makedirs(imagePath)  # 若图片文件夹不存在就创建
     
            pix.save(imagePath + '/' + 'images_%s.jpg' % (pg))  # 将图片写入指定的文件夹内
            print('图片名称:', 'images_%s.jpg' % (pg))
       
        
        
    
    
    def read_jpg_txt(file_path):
        img = Image.open(file_path)  # 获取图片句柄
        img = img.convert("L")    # 图像转灰度
        
        # 图像二值化处理
        table = []
        for n in range(256):
            if n < 150:
                table.append(0)
            else:
                table.append(1)
        img = img.point(table, '1')
        
        # 识别图片文字
        pic_txt= pytesseract.image_to_string(img, lang='chi_sim')
        print(pic_txt)  
        return pic_txt
    
    
    def deal_img(path_dir):
        # 获取目录下的所有文件和文件夹(文件夹里的内容不会去识别)
        files = os.listdir(path_dir)
        # 文件排序
        files.sort()
        data = open("F:\\ab\\exam.txt", 'a+', encoding="utf-8")
    
        for file in files:
            file_path = os.path.join(path_dir, file)  # 文件全路径
    
            if '.' not in file:  # 排除文件夹
                continue
            file_format = file.split('.')[-1]  # 获取文件格式
            # 如果是PDF文件调用pdf的方法,否则调用图片,文件识别报错添加一条报错数据
            try:
                if file_format in ('jpg', 'JPG'):
                    img_txt = read_jpg_txt(file_path)
                    print(img_txt, file=data)
            except Exception:
                traceback.print_exc()
                continue
        
     
    if __name__ == "__main__":
        # 1、PDF地址
        pdfPath = r"F:\\ab"
        # 2、需要储存图片的目录
        imagePath = r"F:\\pic"
        # 3.文件后缀数字
        count = 1
        # 4.获取文件
        files = glob.glob(pdfPath + r'\*.pdf')
        # 5.循环调用函数进行转化
        for file in files:
            pyMuPDF_fitz(file, imagePath, count)
            count = count + 1
        # 6.处理图片
        deal_img(imagePath)
    

    相关文章

      网友评论

          本文标题:python处理pdf保存为图片并识别

          本文链接:https://www.haomeiwen.com/subject/vyoqddtx.html