tesserocr介紹

一、tesserocr簡介

tesserocr是一個基於Tesseract OCR引擎的Python封裝庫,能夠對圖片進行OCR(光學字符識別)操作,將圖片上的文字提取出來並轉化為可編輯文字。tesserocr提供簡單易用的接口,支持多語言OCR識別,並且能夠處理多種格式的圖片文件。

二、tesserocr的安裝和使用

tesserocr支持Python2和Python3,可以通過pip安裝:$ pip install tesserocr。安裝好tesserocr後,可以使用下面的代碼來進行簡單的OCR操作:

import tesserocr
from PIL import Image

image = Image.open('test.png')
result = tesserocr.image_to_text(image)
print(result.strip())

以上代碼首先打開圖片,然後使用tesserocr.image_to_text()函數進行OCR操作,最後將識別結果打印輸出。可以看到,tesserocr使用非常簡單方便。同時,tesserocr還支持對修改後的圖片進行OCR操作,示例如下:

import tesserocr
from PIL import Image, ImageOps

image = Image.open('test.png')
gray_image = ImageOps.grayscale(image)
result = tesserocr.image_to_text(gray_image)
print(result.strip())

以上代碼實現了對圖片進行灰度處理後再進行OCR操作。需要注意的是,tesserocr對圖片的處理能力可能會受到圖像分辨率、圖像質量和背景噪聲等因素的影響,因此可能會影響最終的OCR識別效果。

三、tesserocr的高級應用

1. 支持多語言OCR識別

tesserocr支持多語言OCR識別,通過設置tesserocr.PyTessBaseAPI()類的語言參數,可以識別多種語言的文本。例如,以下代碼可以識別中文和英文文本:

import tesserocr
from PIL import Image

image = Image.open('test.png')
with tesserocr.PyTessBaseAPI(lang='chi_sim+eng') as api:
    api.SetImage(image)
    result = api.GetUTF8Text()
print(result.strip())

以上代碼使用chi_sim+eng作為語言參數,表示同時識別中文和英文。如果需要識別其他語言,可以將lang參數設置為其他支持的語言代碼。tesserocr支持的語言代碼可以在官方文檔中查詢。

2. 圖片預處理和後處理

tesserocr支持對圖片進行預處理和後處理,提高OCR識別的準確率。以下代碼演示了如何使用tesserocr進行圖片預處理和後處理,示例代碼中使用了二值化處理和模糊處理,提高了OCR識別的準確率:

import tesserocr
from PIL import Image, ImageOps, ImageFilter

image = Image.open('test.png')
gray_image = ImageOps.grayscale(image)
binary_image = gray_image.point(lambda x: 0 if x < 200 else 255)
blurred_image = binary_image.filter(ImageFilter.GaussianBlur(3))
result = tesserocr.image_to_text(blurred_image)
print(result.strip())

以上代碼實現了灰度處理、二值化處理和模糊處理。需要注意的是,在進行預處理和後處理時,tesserocr提供了多種函數和方法,需要根據具體需求進行選擇和調整,以提高識別準確率。

3. 自定義字典

tesserocr還支持自定義詞典,通過設置tesserocr.PyTessBaseAPI()類的變量參數,可以將自定義詞典加載到OCR識別過程中。以下代碼演示了如何自定義詞典:

import tesserocr
from PIL import Image

image = Image.open('test.png')
with tesserocr.PyTessBaseAPI() as api:
    api.SetImage(image)
    api.SetVariable('tessedit_char_whitelist', '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ')
    api.SetVariable('user_words_suffix', 'user-words')
    api.Recognize()
    result = api.GetUTF8Text()
print(result.strip())

以上代碼使用user-words文件作為自定義詞典,user-words文件中包含需要識別的單詞,識別結果會將自定義詞典中的單詞作為首選結果返回。

4. OCR識別率的限制

雖然OCR技術越來越成熟,但是其識別精度仍然受到圖像清晰度、光照條件等因素的影響。因此,在實際使用中,需要根據具體需求和場景來控制OCR識別的精度和限制識別結果的內容。以下代碼演示了如何使用tesserocr進行OCR識別限制:

import tesserocr
from PIL import Image

image = Image.open('test.png')
with tesserocr.PyTessBaseAPI() as api:
    api.SetImage(image)
    api.SetVariable('tessedit_char_whitelist', '0123456789')
    api.SetVariable('load_system_dawg', 'F')
    api.SetVariable('load_freq_dawg', 'F')
    api.Recognize()
    result = api.GetUTF8Text()
print(result.strip())

以上代碼通過設置tessedit_char_whitelist變量,限制識別結果僅包含數字。同時,通過設置load_system_dawg和load_freq_dawg變量,關閉了字典和詞頻的加載,避免干擾結果的準確性。

四、總結

tesserocr是一個強大的OCR識別庫,能夠便捷地對多語言文字進行OCR識別,並且提供了豐富的預處理和後處理方法,可以大大提高識別精度。在實際應用中,需要根據具體需求選擇合適數量的預處理和後處理方法,並且限制OCR識別結果的內容和精度,以達到最佳識別效果。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/239753.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:18
下一篇 2024-12-12 12:18

發表回復

登錄後才能評論