亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python實(shí)現(xiàn)識(shí)別圖片和掃描PDF中的文字

 更新時(shí)間:2025年02月12日 08:14:46   作者:nuclear2011  
在處理掃描的PDF和圖片時(shí),文字信息往往無(wú)法直接編輯、搜索或復(fù)制,這給信息提取和分析帶來(lái)了諸多不便,所以本文將介紹如何使用Python及相關(guān)OCR庫(kù)實(shí)現(xiàn)對(duì)圖片和掃描PDF中文字的識(shí)別,需要的可以了解下

在處理掃描的PDF和圖片時(shí),文字信息往往無(wú)法直接編輯、搜索或復(fù)制,這給信息提取和分析帶來(lái)了諸多不便。手動(dòng)錄入信息不僅耗時(shí)費(fèi)力,還容易出錯(cuò)。光學(xué)字符識(shí)別(OCR)技術(shù)能夠?qū)D片中的文字轉(zhuǎn)換為可編輯文本,使信息提取和處理更加高效。如今,OCR已廣泛應(yīng)用于掃描文件的轉(zhuǎn)換、數(shù)字化文檔的整理、以及自動(dòng)化數(shù)據(jù)輸入等領(lǐng)域。本文將介紹如何使用Python及相關(guān)OCR庫(kù),實(shí)現(xiàn)對(duì)圖片和掃描PDF中文字的識(shí)別。

工具與設(shè)置

要在Python中實(shí)現(xiàn)從圖片和掃描PDF中提取文本,我們需要選擇一個(gè)適當(dāng)?shù)腛CR庫(kù)。本文所選擇的庫(kù)是Spire.OCR for Python。該庫(kù)支持多種語(yǔ)言,包括英語(yǔ)、法語(yǔ)、德語(yǔ)、簡(jiǎn)體中文、繁體中文、日語(yǔ)、韓語(yǔ)等。在使用該庫(kù)之前,我們需要完成以下兩個(gè)步驟:

步驟1:安裝Spire.OCR for Python

在終端中運(yùn)行以下命令安裝Spire.OCR for Python:

pip install Spire.OCR

步驟2:下載OCR模型

Spire.OCR for Python提供了支持Windows(64位)、Linux(64位)和MacOS(10.15及以上)操作系統(tǒng)的三種模型。我們需要根據(jù)自己的系統(tǒng)下載適合的模型:

下載完成后,將它解壓并保存到特定的目錄下。

完成以上兩個(gè)步驟后,我們就可以使用該庫(kù)實(shí)現(xiàn)識(shí)別圖片和掃描PDF中的文字。

Python 識(shí)別圖片中的文字

從圖片中提取文本的過(guò)程比較簡(jiǎn)單。首先,需要配置 OCR 掃描器的相關(guān)設(shè)置(例如:文本識(shí)別語(yǔ)言和OCR模型的路徑);然后對(duì)圖片進(jìn)行掃描;最后將識(shí)別的文字保存為文本文件。

以下是從圖片中提取文本的關(guān)鍵步驟:

  • 初始化 OCR 掃描器:創(chuàng)建 OcrScanner 對(duì)象。
  • 配置 OCR 設(shè)置:通過(guò) OcrScanner 對(duì)象的 ConfigureDependencies 方法,設(shè)置 OCR 模型的路徑和文本識(shí)別語(yǔ)言。
  • 掃描圖片:使用 OcrScanner 對(duì)象的 Scan() 方法,從圖片中識(shí)別文本。
  • 保存文本:獲取識(shí)別出的文本并保存為文本文件。

實(shí)現(xiàn)代碼:

from spire.ocr import *
 
# 初始化OcrScanner對(duì)象
scanner = OcrScanner()
 
# 配置OCR設(shè)置(文本識(shí)別語(yǔ)言和OCR模型路徑)
# 支持的語(yǔ)言包括英語(yǔ)、法語(yǔ)、德語(yǔ)、日語(yǔ)、韓語(yǔ)、簡(jiǎn)體中文、繁體中文等
configureOptions = ConfigureOptions()
configureOptions.ModelPath = r'D:\OCR\win-x64'
configureOptions.Language = 'Chinese'
scanner.ConfigureDependencies(configureOptions)
 
# 掃描圖片
scanner.Scan(r'測(cè)試.png')
 
# 獲取識(shí)別的文本
text = scanner.Text.ToString() + '\n'
 
# 將文本保存到文本文件
with open('輸出.txt', 'a', encoding='utf-8') as file:
file.write(text + '\n')

原始圖片和識(shí)別結(jié)果:

Python 識(shí)別圖片中的文字及其坐標(biāo)位置

有時(shí)除了識(shí)別文本外,還需要獲取文本在圖片中的坐標(biāo)位置。Spire.OCR也支持提取這些信息。

以下是從圖片中識(shí)別文本并獲取其坐標(biāo)位置的關(guān)鍵步驟:

  • 初始化OCR掃描器:創(chuàng)建OcrScanner對(duì)象。
  • 配置OCR設(shè)置:通過(guò)OcrScanner對(duì)象的ConfigureDependencies方法設(shè)置OCR模型的路徑和文本識(shí)別語(yǔ)言。
  • 掃描圖片:使用OcrScanner 對(duì)象的Scan() 方法從圖片中識(shí)別文本。
  • 獲取邊框坐標(biāo):遍歷識(shí)別的文本中的文本塊,獲取每個(gè)文本塊的邊框信息(x, y坐標(biāo)及其寬度和高度)。
  • 保存文本和坐標(biāo):將文本及其坐標(biāo)保存到文本文件中。

實(shí)現(xiàn)代碼:

from spire.ocr import *
 
# 初始化OcrScanner對(duì)象
scanner = OcrScanner()
 
# 配置OCR設(shè)置(文本識(shí)別語(yǔ)言和OCR模型路徑)
# 支持的語(yǔ)言包括英語(yǔ)、法語(yǔ)、德語(yǔ)、日語(yǔ)、韓語(yǔ)、簡(jiǎn)體中文、繁體中文等
configureOptions = ConfigureOptions()
configureOptions.ModelPath = r'D:\OCR\win-x64'
configureOptions.Language = 'Chinese'
scanner.ConfigureDependencies(configureOptions)
 
# 掃描圖片
scanner.Scan(r'測(cè)試.png')
 
# 遍歷識(shí)別的文本中的文本塊,提取每個(gè)文本塊的文本和坐標(biāo)位置等信息
text = ''
for block in scanner.Text.Blocks:
    rectangle = block.Box
    positions = f'{block.Text} -> x: {rectangle.X}, y: {rectangle.Y}, w: {rectangle.Width}, h: {rectangle.Height}'
    text += positions + '\n'
 
# 將文本和坐標(biāo)保存到文本文件
with open('圖片文字及坐標(biāo).txt', 'a', encoding='utf-8') as file:
    file.write(text + '\n')

Python 識(shí)別掃描PDF中的文字

對(duì)于掃描的PDF文檔,需先將每一頁(yè)轉(zhuǎn)換為圖片格式??梢越柚?a target="_blank">Spire.PDF for Python庫(kù)來(lái)實(shí)現(xiàn)這一點(diǎn)。將PDF頁(yè)面轉(zhuǎn)換為圖片后,即可對(duì)每張圖片執(zhí)行 OCR 處理。

在使用以下代碼之前,請(qǐng)先通過(guò)以下命令安裝Spire.PDF:

pip install Spire.PDF

以下是從掃描PDF中提取文本的關(guān)鍵步驟:

  • 將PDF頁(yè)面轉(zhuǎn)換為圖片:使用Spire.PDF加載掃描的PDF文檔,然后使用PdfDocument.SaveAsImage()方法將文檔的每一頁(yè)保存為圖片。
  • 執(zhí)行OCR:使用Spire.OCR識(shí)別每張圖片中的文本。
  • 保存識(shí)別的文本:將識(shí)別的文本保存到文本文件中。

實(shí)現(xiàn)代碼:

from spire.pdf import *
from spire.ocr import *
import io
 
# 將PDF頁(yè)面轉(zhuǎn)換為圖片
def convert_pdf_page_to_image(pdf, page_index):
    return pdf.SaveAsImage(page_index)
 
# 從圖片中識(shí)別文本
def recognize_text_from_image(imgName, language, model_path):
    # 初始化OCR掃描器并配置OCR模型的路徑和文本識(shí)別語(yǔ)言
    scanner = OcrScanner()
    configure_options = ConfigureOptions()
    configure_options.Language = language
    configure_options.ModelPath = model_path
    scanner.ConfigureDependencies(configure_options)
 
    # 執(zhí)行OCR并返回識(shí)別的文本
    scanner.Scan(imgName)
    data = scanner.Text.ToString()
    return data
 
# 加載掃描PDF文檔
pdf = PdfDocument()
pdf.LoadFromFile('掃描.pdf')
 
# 創(chuàng)建文本文件以保存提取的文本
with open('掃描PDF.txt', 'a', encoding='utf-8') as writer:
    for page_index in range(pdf.Pages.Count):
        # 將PDF頁(yè)面轉(zhuǎn)換為圖片
        image = convert_pdf_page_to_image(pdf, page_index)
        imgName="toImage_"+str(page_index)+".png"
        image.Save(imgName)
 
        # 從圖片中識(shí)別文本
        recognized_text = recognize_text_from_image(imgName, 'Chinese', r'D:\OCR\win-x64')
 
        # 將識(shí)別的文本寫(xiě)入文本文件
        writer.write(f'Page {page_index + 1}:\n')
        writer.write(recognized_text)
        writer.write('\n\n')  # 在頁(yè)面之間添加兩個(gè)換行符
 
print('文本已成功保存到"掃描PDF.txt"。')

注意事項(xiàng)

OCR的準(zhǔn)確性很大程度上受到圖片質(zhì)量的影響。使用清晰、對(duì)比度良好,不模糊、傾斜的圖片,可以提高識(shí)別結(jié)果的準(zhǔn)確性。不同OCR庫(kù)可能對(duì)不同語(yǔ)言和字體的支持程度不同,一些特定語(yǔ)言或字體可能識(shí)別效果較差。因此在識(shí)別完成后,最好再人工校對(duì)一遍。

到此這篇關(guān)于Python實(shí)現(xiàn)識(shí)別圖片和掃描PDF中的文字的文章就介紹到這了,更多相關(guān)Python識(shí)別圖片和PDF內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論