最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python利用cnocr庫實現pdf文件的文字識別

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

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

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文件中指定的頁面范圍內的內容轉換成文本文件
    :param input_file: 要識別的pdf文件的相對或絕對路徑,包含文件名的字符串
    :param output_file: 保存識別結果的txt文件的相對或絕對路徑
    :param start_page: 識別起始頁面,默認為第1頁
    :param page_count: 識別的頁數,默認為所有頁面
    :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的識別模型尚未下載,以下語句執(zhí)行時CnOcr會自動下載模型并解壓到用戶目錄下的AppData\\Roaming\\cnocr\\cnocr版本號下
    # 也可以在初始化時指定rec_model_fp參數給出模型所在的相對路徑或絕對路徑指定識別模型,如以下示例(因以下路徑是我的電腦上的默認路徑,
    # 因此下面兩行代碼與ocr = CnOcr()完全等價
    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轉換為nympy.ndarray,供CnOcr識別
            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讀取識別結果的方式與2.1版本已經不同
            	# 如果cnocr識別結果總是一些textscoreposition字符串,那就是用了老版的方式
                string_list.append(val['text'])

            ocr_result_string = '\n'.join(string_list)
            f.write(ocr_result_string)  # 這行代碼自帶文件關閉功能,不需要再寫 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的識別結果時,如果安裝的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如果仍然用以上方式,那么取出的識別結果將是一串“textscoreposition”。

下面是以上程序識別曹植集校注中一頁的結果:

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

原始掃描頁面100%縮放圖像如下:

可見準確率也還勉強可以接受。如果將圖像做個對比度增強并適當放大再識別,還可以進一步提高準確率。下面是使用OpenCV將圖片放大2倍后的識別結果,對比可以看出準確率有所提高:

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

以上就是Python利用cnocr庫實現pdf文件的文字識別的詳細內容,更多關于Python cnocr pdf文字識別的資料請關注腳本之家其它相關文章!

相關文章

最新評論

清丰县| 楚雄市| 长武县| 陇川县| 衡东县| 耒阳市| 新泰市| 崇礼县| 吉木乃县| 日照市| 万全县| 博白县| 玉溪市| 石首市| 鲁山县| 卢湾区| 巨野县| 巴林右旗| 罗甸县| 尚义县| 舒城县| 凌海市| 奈曼旗| 涿鹿县| 达拉特旗| 景德镇市| 石狮市| 昌吉市| 武清区| 岑巩县| 剑阁县| 奉节县| 工布江达县| 南漳县| 象州县| 横山县| 通许县| 泾阳县| 永昌县| 永吉县| 枝江市|