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

Python利用cnocr庫(kù)實(shí)現(xiàn)pdf文件的文字識(shí)別

 更新時(shí)間:2024年12月12日 11:46:07   作者:yivifu  
很多pdf文件文字識(shí)別軟件都會(huì)收費(fèi),免費(fèi)的網(wǎng)頁(yè)版可能會(huì)帶來(lái)信息泄露,所以本文為大家介紹了如何利用Python中的cnocr庫(kù)完成中文掃描pdf文件的文字識(shí)別,需要的可以參考下

很多pdf文件文字識(shí)別軟件都會(huì)收費(fèi),免費(fèi)的網(wǎng)頁(yè)版可能會(huì)帶來(lái)信息泄露,還有一些類似于騰訊AI和百度AI的接口都有調(diào)用次數(shù)限制,因此,利用識(shí)別正確率極高且免費(fèi)的cnocr庫(kù)來(lái)自己動(dòng)手做個(gè)pdf文件文字識(shí)別程序就是一個(gè)很不錯(cuò)的選擇。以下程序利用pymupdf打開pdf文件并將頁(yè)面圖像數(shù)據(jù)讀出,然后用numpy將pymupdf讀取的頁(yè)面圖像轉(zhuǎn)換為cnocr能夠接受的np.ndarray格式的圖像數(shù)據(jù),再由cnocr進(jìn)行文字識(shí)別。numpy、pymupdf和cnocr庫(kù)的安裝都可以用pip install指令簡(jiǎn)單完成,不多贅述。

import numpy as np
from cnocr import CnOcr
from pymupdf import pymupdf


def pdf2txt(input_file, output_file, start_page=0, page_count=-1):
    """
    將掃描的pdf文件中指定的頁(yè)面范圍內(nèi)的內(nèi)容轉(zhuǎn)換成文本文件
    :param input_file: 要識(shí)別的pdf文件的相對(duì)或絕對(duì)路徑,包含文件名的字符串
    :param output_file: 保存識(shí)別結(jié)果的txt文件的相對(duì)或絕對(duì)路徑
    :param start_page: 識(shí)別起始頁(yè)面,默認(rèn)為第1頁(yè)
    :param page_count: 識(shí)別的頁(yè)數(shù),默認(rèn)為所有頁(yè)面
    :return:
    """
    pdf = pymupdf.open(input_file)
    count = pdf.page_count

    if start_page < 0:
        start_page = 0
    if page_count < 0 or page_count + start_page > count:
        end_page = count
    else:
        end_page = page_count + start_page
    # 如CnOcr的識(shí)別模型尚未下載,以下語(yǔ)句執(zhí)行時(shí)CnOcr會(huì)自動(dòng)下載模型并解壓到用戶目錄下的AppData\\Roaming\\cnocr\\cnocr版本號(hào)下
    # 也可以在初始化時(shí)指定rec_model_fp參數(shù)給出模型所在的相對(duì)路徑或絕對(duì)路徑指定識(shí)別模型,如以下示例(因以下路徑是我的電腦上的默認(rèn)路徑,
    # 因此下面兩行代碼與ocr = CnOcr()完全等價(jià)
    ocr = CnOcr(rec_model_fp='C:\\Users\\asus\\AppData\\Roaming\\cnocr\\2.3\\densenet_lite_136-gru'
                             '\\cnocr-v2.3-densenet_lite_136-gru-epoch=004-ft-model.onnx')
    print(start_page, end_page)

    with open(output_file, 'w', encoding='utf-8') as f:
        for i in range(start_page, end_page):
            page = pdf[i]
            pix = page.get_pixmap()
            width = pix.width
            height = pix.height
            # pixmap轉(zhuǎn)換為nympy.ndarray,供CnOcr識(shí)別
            image = np.frombuffer(pix.samples, dtype=np.uint8).reshape(height, width, pix.n)
            res = ocr.ocr(image)
            string_list = []
            for val in res:
            	# 注意這是2.2版本以后的cnocr讀取識(shí)別結(jié)果的方式與2.1版本已經(jīng)不同
            	# 如果cnocr識(shí)別結(jié)果總是一些textscoreposition字符串,那就是用了老版的方式
                string_list.append(val['text'])

            ocr_result_string = '\n'.join(string_list)
            f.write(ocr_result_string)  # 這行代碼自帶文件關(guān)閉功能,不需要再寫 f.close()
            print(f'page{i + 1} finished.')

    pdf.close()


input_file = f'test.pdf'
output_file = 'test.txt'
pdf2txt(input_file, output_file, 500, 522)

需要注意的是,在讀取cnocr的識(shí)別結(jié)果時(shí),如果安裝的cnocr版本低于2.2,那么

以上代碼中的

for val in res:
    string_list.append(val['text'])

要改成下面這樣:

for i in range(len(res)):
    for j in res[i]:
        string_list.append(j)

但是2.2版本以后的cnocr如果仍然用以上方式,那么取出的識(shí)別結(jié)果將是一串“textscoreposition”。

下面是以上程序識(shí)別曹植集校注中一頁(yè)的結(jié)果:

(本冥指隱蔽偏鮮之處。此言卡太后即使在獨(dú)處之時(shí)也很謹(jǐn)慎,在隱
游之處電依禮行。
5〔誠(chéng)(juon))潔也?!菜])進(jìn)獻(xiàn)?!踩┡?、羊、豬,指祭
品。此吉請(qǐng)凈地進(jìn)獻(xiàn)祭品。(視)條配時(shí)主持條禮之人。
3〔宜享斯祜]應(yīng)該享受知此之服。精:棋。宋本作“”?!裁?br />社〕即受桶。(肉特)鍋獎(jiǎng)。(勉)月“免。即超免
四〔會(huì)街盡禮)條祀折特時(shí)湖盡禮數(shù)。篤)厚,指調(diào)情加重。
[密)痊愈。(終)指生命到終點(diǎn)。
等〔遺州)南植自指。(在收)指在優(yōu)傷久病之中。(部)指下太
后去世的內(nèi)信?!矕|藩)洛陽(yáng)東面的藩國(guó)。曹植時(shí)時(shí)東阿王。東阿在洛
陽(yáng)東。[郊甸)郊野。丁本:《藝文類聚》作“晗。”家本亦作“除”。
哈指田地里的小路、與籌義同。(中原)原野之中。
中(皇址]望號(hào)。[遷)肉去。[峽復(fù)) 經(jīng)常來(lái)看我。
等〔歲字)空貌,即人去限空。(巡省階除)在宮中的小道上巡視。
(仿佛碳軒在窗戶間仿佛著見了下太行的身影容艦。銀軒:窗戶。
就【韓梨)指下太后的居室。(兒益)兒席。座席?!残Ч剩└淖?br />原承的樣子。
2〔酷指您傷全做。斯)如此。(墻)。(魏部)指鄴。曹操
界于都,下太后的是權(quán)專運(yùn)到部與曹操合養(yǎng)。(日包)指鄴?!菜恚?amp;
道?!财?《藝文類聚》、宋本俱作“將”。
3(嘆息露興)嘆息之氣粥如霧氣興起,形容送師人之多。〔幅
(r而))靈車。
容車飾駕,以合北展®
0丁本:“《文選》顏廷年《宋元泉后哀策文》李注引《上宜后請(qǐng)
&》.
-469.

原始掃描頁(yè)面100%縮放圖像如下:

可見準(zhǔn)確率也還勉強(qiáng)可以接受。如果將圖像做個(gè)對(duì)比度增強(qiáng)并適當(dāng)放大再識(shí)別,還可以進(jìn)一步提高準(zhǔn)確率。下面是使用OpenCV將圖片放大2倍后的識(shí)別結(jié)果,對(duì)比可以看出準(zhǔn)確率有所提高:

(本冥〕指隱蔽偏解之處。此言卡太后即使在獨(dú)處之時(shí)也很謹(jǐn)慎,在隱
游之處也依禮間行。
S(磚(juon))潔也?!菜]〕進(jìn)獻(xiàn)。(三牲〕牛、羊、豬.指祭
品。此言潔凈地進(jìn)獻(xiàn)祭品。(?!臣漓霑r(shí)主持祭禮之人。
3(宜享斯祜)應(yīng)該享受知此之福。精:攝、宋本作“豬”?!裁?br />社〕即受福?!矁淳?禍火?!裁悖┰?ldquo;免”.即避免。
四〔云傳盡禮)條祀祈傳時(shí)湖盡禮數(shù)。篤)厚,指病情加重。
(瘡)經(jīng)。〔終)指生命到終點(diǎn)。
多〔逸弧)曹植自指。(在款)指在優(yōu)傷久病之中。(諱)指下太
后去世的內(nèi)信?!矕|洛)洛陽(yáng)東面的等國(guó)。、曹植時(shí)村東阿王。東阿在洛
陽(yáng)東。(郊甸)郊野。丁本:《藝文類聚》作“峰。”宋本亦作“時(shí)”。
哈指田地里的小路。與年義同。(中原)原野之中。
9(皇址)皇號(hào)。[遷〕肉去。[峽復(fù)〕經(jīng)常來(lái)看我。
0〔歲凱)空貌,即人去屋空?!惭彩‰A涂)在宮中的小道上巡視。
(仿佛候軒)在窗戶間仿佛看見了卡太后的身影容顏。領(lǐng)軒:窗戶。
就〔韓蟹)指下太后的店室。〔兒流)兒席。座席?!矤C故)改變
原來(lái)的樣子。
心〔酷)指悲傷至極。〔斯)如此。(秦)到?!参憾?指鄴。曹操
養(yǎng)于郎,下太后的是框要運(yùn)到第與曹操合養(yǎng)。(舊色)指鄴。(能)眾
道?!财?《藝文類聚》、宋木供作“將”。
3(嘆息露興)嘆息之氣宛如霧氣興起,形容送葬人之多?!卜?br />(r而))靈車。
容車飾駕,以合北辰®
0丁本:“《文選》顏廷年《宋元皇后哀策文》李注引《上宣后請(qǐng)
表.”
.469.

以上就是Python利用cnocr庫(kù)實(shí)現(xiàn)pdf文件的文字識(shí)別的詳細(xì)內(nèi)容,更多關(guān)于Python cnocr pdf文字識(shí)別的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 使用python構(gòu)建一個(gè)自己的聊天室

    使用python構(gòu)建一個(gè)自己的聊天室

    這篇文章主要介紹了使用python構(gòu)建一個(gè)自己的聊天室,有助于幫助小伙伴們理解掌握Python的socket編程,需要的朋友可以參考下
    2023-04-04
  • python中的decimal類型轉(zhuǎn)換實(shí)例詳解

    python中的decimal類型轉(zhuǎn)換實(shí)例詳解

    decimal 模塊實(shí)現(xiàn)了定點(diǎn)和浮點(diǎn)算術(shù)運(yùn)算符,使用的是大多數(shù)人所熟悉的模型,而不是程序員熟悉的模型,即大多數(shù)計(jì)算機(jī)硬件實(shí)現(xiàn)的 IEEE 浮點(diǎn)數(shù)運(yùn)算。這篇文章主要介紹了python里的decimal類型轉(zhuǎn)換,需要的朋友可以參考下
    2019-06-06
  • python多線程高級(jí)鎖condition簡(jiǎn)單用法示例

    python多線程高級(jí)鎖condition簡(jiǎn)單用法示例

    這篇文章主要介紹了python多線程高級(jí)鎖condition簡(jiǎn)單用法,結(jié)合實(shí)例形式分析了condition對(duì)象常用方法及相關(guān)使用技巧,需要的朋友可以參考下
    2019-11-11
  • windows10下python3.5 pip3安裝圖文教程

    windows10下python3.5 pip3安裝圖文教程

    這篇文章主要為大家詳細(xì)介紹了windows10下python3.5 pip3安裝圖文教程,注意區(qū)分python 2.x和python 3.x的相關(guān)命令,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • Python字符串拼接的幾種方法整理

    Python字符串拼接的幾種方法整理

    這篇文章主要介紹了Python字符串拼接的幾種方法整理的相關(guān)資料,這里提供了五種方法及實(shí)現(xiàn),需要的朋友可以參考下
    2017-08-08
  • 解決pycharm下os.system執(zhí)行命令返回有中文亂碼的問(wèn)題

    解決pycharm下os.system執(zhí)行命令返回有中文亂碼的問(wèn)題

    今天小編就為大家分享一篇解決pycharm下os.system執(zhí)行命令返回有中文亂碼的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-07-07
  • 人臉識(shí)別實(shí)戰(zhàn)之Opencv+SVM實(shí)現(xiàn)人臉識(shí)別

    人臉識(shí)別實(shí)戰(zhàn)之Opencv+SVM實(shí)現(xiàn)人臉識(shí)別

    這篇文章主要介紹了通過(guò)Opencv+SVM實(shí)現(xiàn)人臉識(shí)別功能,文中的示例代碼介紹詳細(xì),對(duì)于我們學(xué)習(xí)人臉識(shí)別和OpenCV都有一定的幫助,感興趣的小伙伴可以學(xué)習(xí)一下
    2021-12-12
  • python一行輸入多值的實(shí)現(xiàn)詳解

    python一行輸入多值的實(shí)現(xiàn)詳解

    開發(fā)人員通常想要用戶在一行中輸入多個(gè)值或者輸入。在python中有兩種方式讓用戶在一行中輸入多個(gè)值或者輸入,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-09-09
  • python輸出結(jié)果刷新及進(jìn)度條的實(shí)現(xiàn)操作

    python輸出結(jié)果刷新及進(jìn)度條的實(shí)現(xiàn)操作

    這篇文章主要介紹了python輸出結(jié)果刷新及進(jìn)度條的實(shí)現(xiàn)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-07-07
  • Python?使用csv庫(kù)處理CSV文件的方法

    Python?使用csv庫(kù)處理CSV文件的方法

    Python中集成了專用于處理csv文件的庫(kù),名為:csv,本文給大家介紹了Python使用csv庫(kù)處理CSV文件的方法及csv庫(kù)中4個(gè)常用的對(duì)象,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06

最新評(píng)論