美文网首页
pdf批量转换成文本,表格

pdf批量转换成文本,表格

作者: 楚糖的糖 | 来源:发表于2021-03-29 19:08 被阅读0次

思路步骤:
功能:将pdf文件进行ocr识别

  • 步骤1:pdf转换成高精度的png图片,保存到result/revote的目录下
  • 步骤2:将图片旋转摆正并保存,保存到result的目录下
  • 步骤3:图片进行ocr识别并写入当前文档
# *_* coding :UTF-8 *_*

import os
import time

import fitz
import glob as glob

import requests
from aip import AipOcr
from PIL import Image

'''
申请百度ai,获取APP_ID,API_KEY,SECRET_KEY

'''
APP_ID = '你创建的APP_ID'

API_KEY = 你创建的API_KEY '  # 公钥

SECRET_KEY = '你创建的SECRET_KEY '  # 密钥

aipOcr = AipOcr(APP_ID, API_KEY, SECRET_KEY)  # 初始化AipFace对象

# 定义常量,请用你刚才自己申请的AI接口
pdf_filepath = "收费设施.pdf"  # 进行ocr识别的pdf路径
result_dir = "pdf_tableresult"  # table类型的表格存放的路径
revolve = "90"  # 需要进行逆时针旋转的角度
dir = "result/"  # 旋转后图片生成的目录
type_transform = "excel"  # 转换类型(txt:转换成txt文档 |   excel,转换成excel文档)

#选择转换类型
def discriminate_main():    
    images = discriminate_pdf()
    if type_transform == "txt":
        txt_discriminate(images)
    if type_transform == "excel":
        table_discriminate(images)
    else:
        print("输入转换类型错误")




#  打开PDF文件,生成一个对象
def open_files1(pdf_filepath):
    doc = fitz.open(pdf_filepath)
    for pg in range(doc.pageCount):
        page = doc[pg]
        rotate = int(0)
        # 每个尺寸的缩放系数为2,这将为我们生成分辨率提高四倍的图像。
        zoom_x = 2.0
        zoom_y = 2.0
        trans = fitz.Matrix(zoom_x, zoom_y).preRotate(rotate)
        pm = page.getPixmap(matrix=trans, alpha=False)
        pm.writePNG(dir + 'revolve/' + '%s.png' % pg)
        im = Image.open(dir + 'revolve/' + '%s.png' % pg)
        im2 = im.rotate(int(revolve))  # 图片逆时针旋转
        im2.save(dir + '%s.png' % pg)  # 旋转后的图片进行保存


# 识别相应的图片名称
def pdf_photo_open():
    img_name = []
    for file_name in glob.glob(dir + "*png"):
        img_name.append(file_name)
    return img_name


def get_file_content(filePath):
    with open(filePath, 'rb') as fp:
        return fp.read()


def file_download(url, file_path):  # 进行excel文件的下载
    r = requests.get(url)
    with open(file_path, 'wb') as f:
        f.write(r.content)


options = {}
options["detect_direction"] = "true"  # 检测朝向
options["language_type"] = "CHN_ENG"  # 检测语言
options["result_type"] = "excel"  # ocr识别表格的时候使用(json   excel)


def discriminate_pdf():   #
    open_files1(pdf_filepath)  #pdf转换成图片,并旋转成想要的角度
    img_names = pdf_photo_open()   #识别所有需要转换的图片的名称
    images = []
    for filePath in img_names:
        image = get_file_content(filePath)     #读取需要转换的图片
        images.append(image)
    return images


def txt_discriminate(images):
    for image in images:
        result = aipOcr.webImage(image, options)    # 识别网络文字
        # print(result)
        for i in range(len(result['words_result'])):
            ocr_txt = result['words_result'][i]['words']
            print(ocr_txt)
            with open('test.txt', 'a+', encoding='UTF-8') as file:
                file.write(ocr_txt + '\n')


def table_discriminate(images):
    for image in images:
        result = aipOcr.tableRecognitionAsync(image, options)   #识别为表格类型
        table_requestid = result["result"][0]["request_id"]
        # print(table_requestid)
        for count in range(1, 10):  # OCR识别也需要一定时间,设定10秒内每隔1秒查询一次

            res = aipOcr.getTableRecognitionResult(table_requestid)  # 通过ID获取表格文件XLS地址

            print(res['result']['ret_msg'])
            if res['result']['ret_msg'] == '已完成':      #ret_msg变成已完成需要一定的时间,已完成的时候result_data才有值
                print(images[7:])                         #打印图片名称
                print(res['result']['result_data'])       #打印excel下载链接

                break  # 云端处理完毕,成功获取表格文件下载地址,跳出循环

            else:
                url = res['result']['result_data']

                xls_name = images[7:] + '.xls'

                file_download(url, os.path.join(result_dir, xls_name))  # 调用下载,(os.path.join用于路径拼接文件路径)

                num = num + 1

                print('{0}: {1} 下载完成。'.format(num, xls_name))

                time.sleep(1)





discriminate_main()

相关文章

  • pdf批量转换成文本,表格

    思路步骤:功能:将pdf文件进行ocr识别 步骤1:pdf转换成高精度的png图片,保存到result/revot...

  • 文本与表格

    一、文本转表格 1.全选数据,依次单击【插入】—【表格】—【文本转换成表格】。 2.在【将文字转换成表格】对话框中...

  • 2021-01-05

    1、在word中,文本与表格可以相互转换,文本能转换成表格,表格能转换成文本。 2、计算机可直接执行的指令一般都包...

  • 如何统计各科期末成绩汇总

    一、如何将word文本变成表格? 首先在word文档中选插入表格,选文本转换成表格,在制作之前,要将word文本每...

  • 计算机二级之word

    文字处理 重命名 做准考证: 表格(3列9行) 文字直接转换成表格 文本转换成表格: 1.表格列数 表格行数 2...

  • 如何快速将excel表格转成pdf

    日常工作中大家都会遇到把excel表格转换成PDF或者PDF转换为表格的情况,防止修改和盗用,PDF是专门为了方便...

  • 技能!如何将PDF文档转成TXT文本格式?

    在日常办公中,我们总需要将某些文件转换成其他文档格式,比如说PDF转换成TXT文本格式。PDF电子文档如何转换成文...

  • smallpdf转成excel

    公司的服务器在excel表格上传至服务器之前都是会将excel表格通过服务器的特殊处理转换成PDF文件。转成PDF...

  • pdf怎么转换成excel?学会这个方法!

    pdf怎么转换成excel?有时候我们有pdf格式的表格,但是在pdf里面我们不能够进行类似excel的操作...

  • 这个小技巧能帮你将1小时的工作量,缩减到1分钟

    1.将文本转换成表格 2.文字分隔方式 3.使用时有哪些需要注意的点 4.表格一键转换成文本 前言 前段时间有个小...

网友评论

      本文标题:pdf批量转换成文本,表格

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