欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python使用paddleOCR批量識(shí)別pdf的方法

 更新時(shí)間:2024年03月03日 09:55:40   作者:Python斗羅  
PaddleOCR可以在圖像、文本、表格等多種場(chǎng)景下進(jìn)行文字識(shí)別,本文主要介紹了Python使用paddleOCR批量識(shí)別pdf的方法,具有一定的參考價(jià)值,感興趣的可以了解一下

PaddleOCR是一個(gè)基于PaddlePaddle深度學(xué)習(xí)框架的OCR(Optical Character Recognition,光學(xué)字符識(shí)別)系統(tǒng),可以在圖像、文本、表格等多種場(chǎng)景下進(jìn)行文字識(shí)別,具有高速、高精度、高可定制性等特點(diǎn)。在應(yīng)用中,可以使用PaddleOCR進(jìn)行pdf文件的批量識(shí)別。

注意,本文章所述方法僅適用于單欄文本,無表格等復(fù)雜場(chǎng)景的情況。

以下是使用PaddleOCR批量識(shí)別pdf的步驟:

1、安裝PaddleOCR
首先需要安裝PaddleOCR,可以參考官方文檔進(jìn)行安裝。
按照文檔來非常的簡(jiǎn)單。無需害怕。https://github.com/PaddlePaddle/PaddleOCR

2、準(zhǔn)備pdf文件
將需要識(shí)別的pdf文件準(zhǔn)備好,可以使用一個(gè)掃描版進(jìn)行測(cè)試。

3、使用PaddleOCR進(jìn)行識(shí)別
paddleocr識(shí)別pdf的過程是先將pdf變?yōu)閳D片,再識(shí)別圖片,最終再拼接出答案。
所以我們?cè)诖藢⑦^程分為兩個(gè)函數(shù)。

如下:

import datetime
import os
import fitz  # fitz就是pip install PyMuPDF

def pdf2png(pdfPath, baseImagePath):
    imagePath=os.path.join(baseImagePath,os.path.basename(pdfPath).split('.')[0])
    startTime_pdf2img = datetime.datetime.now()  # 開始時(shí)間
    print("imagePath=" + imagePath)
    if not os.path.exists(imagePath):
        os.makedirs(imagePath)
    pdfDoc = fitz.open(pdfPath)
    totalPage=pdfDoc.pageCount
    for pg in range(totalPage):
        page = pdfDoc[pg]
        rotate = int(0)
        zoom_x = 2
        zoom_y = 2
        mat = fitz.Matrix(zoom_x, zoom_y).prerotate(rotate)
        pix = page.get_pixmap(matrix=mat, alpha=False)
        print(f'正在保存{pdfPath}的第{pg+1}頁,共{totalPage}頁')
        pix.save(imagePath + '/' + f'images_{pg+1}.png')
    endTime_pdf2img = datetime.datetime.now()
    print(f'{pdfDoc}-pdf2img-花費(fèi)時(shí)間={(endTime_pdf2img - startTime_pdf2img).seconds}秒')

if __name__ == "__main__":
    pdfPath = r'./demo-scan.pdf'
    baseImagePath = './imgs'
    pdf2png(pdfPath, baseImagePath)
import os
import cv2
from paddleocr import PPStructure,save_structure_res
from paddleocr.ppstructure.recovery.recovery_to_doc import sorted_layout_boxes, convert_info_docx
from copy import deepcopy
# 中文測(cè)試圖
table_engine = PPStructure(recovery=True,lang='ch')

image_path = './imgs/demo-scan'
save_folder = './txt'
def img2docx(img_path):
    text=[]
    imgs=os.listdir(img_path)
    for img_name in imgs:
        print(os.path.join(img_path,img_name))
        img = cv2.imread(os.path.join(img_path,img_name))
        result = table_engine(img)

        save_structure_res(result, save_folder, os.path.basename(img_path).split('.')[0])

        h, w, _ = img.shape
        res = sorted_layout_boxes(result, w)
        convert_info_docx(img, res, save_folder, os.path.basename(img_path).split('.')[0])

        for line in res:
            line.pop('img')
            print(line)
            for pra in line['res']:
                text.append(pra['text'])
            text.append('\n')
        with open('txt/res.txt', 'w', encoding='utf-8') as f:
            f.write('\n'.join(text))
img2docx(image_path)

以上代碼將會(huì)讀取指定目錄下的pdf文件,并將其轉(zhuǎn)換為圖像列表,然后使用PaddleOCR進(jìn)行識(shí)別,最后將識(shí)別結(jié)果保存在指定目錄下的文本文件中。

需要注意的是,使用PaddleOCR進(jìn)行pdf識(shí)別時(shí),由于pdf文件通常包含多頁,需要將每一頁的內(nèi)容分別識(shí)別,并將其合并成完整的文本內(nèi)容。

另外,由于PaddleOCR的識(shí)別結(jié)果可能存在誤識(shí)別的情況,需要對(duì)識(shí)別結(jié)果進(jìn)行校驗(yàn)和修正。

到此這篇關(guān)于Python使用paddleOCR批量識(shí)別pdf的方法的文章就介紹到這了,更多相關(guān)Python批量識(shí)別pdf內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Django如何實(shí)現(xiàn)防止XSS攻擊

    Django如何實(shí)現(xiàn)防止XSS攻擊

    這篇文章主要介紹了Django如何實(shí)現(xiàn)防止XSS攻擊,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Python中如何引入第三方模塊

    Python中如何引入第三方模塊

    在本篇文章中小編給大家分享的是一篇關(guān)于Python中如何引入第三方模塊的相關(guān)知識(shí)點(diǎn),需要的朋友們可以學(xué)習(xí)下。
    2020-05-05
  • python MD5加密的示例

    python MD5加密的示例

    這篇文章主要介紹了python MD5加密的示例,幫助大家更好的利用python進(jìn)行加密,感興趣的朋友可以了解下
    2020-10-10
  • 深入解析Python設(shè)計(jì)模式編程中建造者模式的使用

    深入解析Python設(shè)計(jì)模式編程中建造者模式的使用

    這篇文章主要介紹了深入解析Python設(shè)計(jì)模式編程中建造者模式的使用,建造者模式的程序通常將所有細(xì)節(jié)都交由子類實(shí)現(xiàn),需要的朋友可以參考下
    2016-03-03
  • 手把手教你使用Python創(chuàng)建微信機(jī)器人

    手把手教你使用Python創(chuàng)建微信機(jī)器人

    微信,一個(gè)日活10億的超級(jí)app,不僅在國(guó)內(nèi)社交獨(dú)領(lǐng)風(fēng)騷,在國(guó)外社交也同樣占有一席之地,今天我們要將便是如何用Python來生成一個(gè)微信機(jī)器人,感興趣的朋友跟隨小編一起看看吧
    2019-04-04
  • 淺談flask源碼之請(qǐng)求過程

    淺談flask源碼之請(qǐng)求過程

    這篇文章主要介紹了淺談flask源碼之請(qǐng)求過程,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-07-07
  • Python如何判斷字符串是否僅包含數(shù)字

    Python如何判斷字符串是否僅包含數(shù)字

    在用Python進(jìn)行數(shù)據(jù)處理的時(shí)候,經(jīng)常會(huì)遇到DataFrame中的某一列本應(yīng)該是數(shù)值類型,但由于數(shù)據(jù)不規(guī)范導(dǎo)致在字段中夾雜了非數(shù)值類型,本文就介紹了Python如何判斷字符串是否僅包含數(shù)字,感興趣的可以了解一下
    2022-03-03
  • 在Python的Django框架中生成CSV文件的方法

    在Python的Django框架中生成CSV文件的方法

    這篇文章主要介紹了在Python的Django框架中生成CSV文件的方法,利用到了Python下的csv模塊,需要的朋友可以參考下
    2015-07-07
  • Python簡(jiǎn)單獲取二維數(shù)組行列數(shù)的方法示例

    Python簡(jiǎn)單獲取二維數(shù)組行列數(shù)的方法示例

    這篇文章主要介紹了Python簡(jiǎn)單獲取二維數(shù)組行列數(shù)的方法,結(jié)合實(shí)例形式分析了Python基于numpy模塊的二維數(shù)組相關(guān)運(yùn)算技巧,需要的朋友可以參考下
    2018-12-12
  • python腳本替換指定行實(shí)現(xiàn)步驟

    python腳本替換指定行實(shí)現(xiàn)步驟

    這篇文章主要介紹了 python腳本替換指定行實(shí)現(xiàn)步驟的相關(guān)資料,需要的朋友可以參考下
    2017-07-07

最新評(píng)論