[OpenCV][Python]實測tesseract OCR縮放到最佳高度可提高辨識率嗎?

更新於 發佈於 閱讀時間約 1 分鐘

Tesseract的討論論壇中看到一篇文章,有人研究tesseract在文字高度在30~33pixl~內辨識率是最佳的。

本文就將來實作看看,拿出之前實驗用的OCR圖檔來跑跑看。

實驗內容

縮放與不縮放的圖片在tesseract OCR結果比較

圖片縮放流程

  1. 先讀取圖片中OCR的高度,取中位數。
  2. 按照比例縮放圖片
  3. 確認縮放後的圖片中的OCR高度是否在區間內
  4. 辨識文字

縮放的程式範例

import os
import pytesseract
import time
import numpy as np
from collections import Counter
import cv2

def obj_area(img):
num_labels, labels, stats, _ = cv2.connectedComponentsWithStats(img, connectivity=8)
components = []
ocr_components = []
if num_labels < 2: # 若全黑的就跳過
return None,None
for i in range(1, num_labels): # 跳過背景
x, y, w, h, area = stats[i]
components.append([x, y, w, h, area])
components.sort(key=lambda c: c[0]) # 按 x 座標排序
for state in components:
_,_,w,h,area = state
# ocr_components.append(f'{ocr}, 寬:{w}, 高 : {h} 面積:{area}')
ocr_components.append((w,h,area))
return ocr_components

def resize_img(img,ocr_h):
H,W = img.shape[:2]
target_height = 31
# 計算目標高度
target_ratio = target_height / ocr_h
if target_ratio > ocr_h :
resize_interpolation = cv2.INTER_CUBIC
else:
resize_interpolation = cv2.INTER_AREA
# 根據計算出的高度進行縮放
scaled_region = cv2.resize(img, (int(W*target_ratio), int(H*target_ratio)), interpolation = resize_interpolation)
return scaled_region

def main():
# 圖檔路徑
img_path = "圖片路徑"
# tesserac檔案路徑
pytesseract.pytesseract.tesseract_cmd = r"tesserac檔案路徑"
config = f'--oem 3 --psm 7'
# 讀取圖檔
img = cv2.imread(img_path)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
labels = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]
# 計算OCR高度
h_res = obj_area(labels)
ocr_h = int(np.median([pos[1] for pos in h_res]))
print(f'原先ocr_h:{ocr_h}')
# 縮放圖片
image_resize = resize_img(labels,ocr_h)
# 計算縮放後的OCR高度
resize_h_res = obj_area(image_resize)
ocr_h_resize = int(np.median([pos[1] for pos in resize_h_res]))
print(f'縮放後的ocr_h:{ocr_h_resize}')
ocr_text = pytesseract.image_to_string(image_resize, lang="eng_Best", config=config)
print(ocr_text)

if __name__ == "__main__":
main()

結果圖

eng_Best模型

原圖:錯誤率35%

原圖

原圖

縮放後 : 錯誤率40%

raw-image

eng_fast模型

原圖:錯誤率10%

raw-image

縮放後:錯誤率 6%

raw-image

結論

模型對於某些字體或者是大小會直接影響到辨識率,官方雖然說Best模型辨識率較佳,但在一些使用上的經驗來講,某些狀況則不一定是最佳,如這次實驗fast模型就好很多。

兩個模型在縮放後的結果也不盡相同,但在fast模型是有明顯提高辨識率的。

留言
avatar-img
留言分享你的想法!
螃蟹_crab-avatar-img
發文者
2024/09/30
[OpenCV][Python]手把教如何使用Tesseract OCR辨識提及了這篇文章,趕快過去看看吧!
avatar-img
螃蟹_crab的沙龍
149會員
285內容數
本業是影像辨識軟體開發,閒暇時間進修AI相關內容,將學習到的內容寫成文章分享。 興趣是攝影,踏青,探索未知領域。 人生就是不斷的挑戰及自我認清,希望老了躺在床上不會後悔自己什麼都沒做。
螃蟹_crab的沙龍的其他內容
2025/04/01
1. 概述 在光學字符識別(OCR)過程中,常見的問題之一是「斷字」,即原本應為一個完整字符的部分被錯誤地分割成兩個或多個獨立的字符。這通常發生在掃描文件、圖像降噪或影像二值化處理後。本篇文章將介紹一種基於 骨架化端點距離分析 的斷字檢測方法,並提供完整的 Python 實作。 2. 斷字檢測的
Thumbnail
2025/04/01
1. 概述 在光學字符識別(OCR)過程中,常見的問題之一是「斷字」,即原本應為一個完整字符的部分被錯誤地分割成兩個或多個獨立的字符。這通常發生在掃描文件、圖像降噪或影像二值化處理後。本篇文章將介紹一種基於 骨架化端點距離分析 的斷字檢測方法,並提供完整的 Python 實作。 2. 斷字檢測的
Thumbnail
2025/03/13
本教學將介紹如何使用 OpenCV 來檢測螺絲的鎖附間距,並提供完整的 Python 程式碼來實作這項功能。 🔹 1. 設計目標 使用二值化處理與形態學運算來強化影像 計算螺絲之間的間距 視覺化結果,標記最大間距並顯示數值 🔹 2. 測試用螺絲影像 🔹 3.
Thumbnail
2025/03/13
本教學將介紹如何使用 OpenCV 來檢測螺絲的鎖附間距,並提供完整的 Python 程式碼來實作這項功能。 🔹 1. 設計目標 使用二值化處理與形態學運算來強化影像 計算螺絲之間的間距 視覺化結果,標記最大間距並顯示數值 🔹 2. 測試用螺絲影像 🔹 3.
Thumbnail
2025/01/18
我們將學習如何使用 Python 和 OpenCV 實現圖像的主色提取與重新著色。 以下的程式碼展示了如何通過 KMeans 聚類演算法分析圖像,提取 HSV 色彩空間中的主色,並將圖像重新著色,提取想偵測的物件的顏色。 在官網案例,實作為RGB色彩空間,但如果套用HSV色彩空間則會因為H色
Thumbnail
2025/01/18
我們將學習如何使用 Python 和 OpenCV 實現圖像的主色提取與重新著色。 以下的程式碼展示了如何通過 KMeans 聚類演算法分析圖像,提取 HSV 色彩空間中的主色,並將圖像重新著色,提取想偵測的物件的顏色。 在官網案例,實作為RGB色彩空間,但如果套用HSV色彩空間則會因為H色
Thumbnail
看更多
你可能也想看
Thumbnail
家中修繕或裝潢想要找各種小零件時,直接上網採買可以省去不少煩惱~看看Sylvia這回為了工地買了些什麼吧~
Thumbnail
家中修繕或裝潢想要找各種小零件時,直接上網採買可以省去不少煩惱~看看Sylvia這回為了工地買了些什麼吧~
Thumbnail
👜簡單生活,從整理包包開始!我的三款愛用包+隨身小物清單開箱,一起來看看我每天都帶些什麼吧🌿✨
Thumbnail
👜簡單生活,從整理包包開始!我的三款愛用包+隨身小物清單開箱,一起來看看我每天都帶些什麼吧🌿✨
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
在Tesseract的討論論壇中看到一篇文章,有人研究tesseract在文字高度在30~33pixl~內辨識率是最佳的。 本文就將來實作看看,拿出之前實驗用的OCR圖檔來跑跑看。 實驗內容 縮放與不縮放的圖片在tesseract OCR結果比較 圖片縮放流程 先讀取圖片中OCR的高度,取
Thumbnail
在Tesseract的討論論壇中看到一篇文章,有人研究tesseract在文字高度在30~33pixl~內辨識率是最佳的。 本文就將來實作看看,拿出之前實驗用的OCR圖檔來跑跑看。 實驗內容 縮放與不縮放的圖片在tesseract OCR結果比較 圖片縮放流程 先讀取圖片中OCR的高度,取
Thumbnail
在tesseract-ocr辨識應用中,建議的留白邊框為10pixl,若Label列印的太剛好,沒有任何的邊框時,就會辨識不到文字。 本文將帶大家如何讓圖像增加邊框。 結果圖 示意的比較誇張,我讓邊框增加100pixl,圖片大小原為211*80。
Thumbnail
在tesseract-ocr辨識應用中,建議的留白邊框為10pixl,若Label列印的太剛好,沒有任何的邊框時,就會辨識不到文字。 本文將帶大家如何讓圖像增加邊框。 結果圖 示意的比較誇張,我讓邊框增加100pixl,圖片大小原為211*80。
Thumbnail
呈上篇文章,針對單排的圖像文字增加間隔,但如果文字是雙排呢 [OpenCV][Python]OCR分割及增加間隔[單排文字]
Thumbnail
呈上篇文章,針對單排的圖像文字增加間隔,但如果文字是雙排呢 [OpenCV][Python]OCR分割及增加間隔[單排文字]
Thumbnail
本文將說明如何去辨識出圖片文字​位置及高寬。
Thumbnail
本文將說明如何去辨識出圖片文字​位置及高寬。
Thumbnail
在文字辨識中,適當的增加一文字彼此間的間隔是有幫助於辨識的,原因在大多數OCR引擎在處理字符時會依賴空白區域來區分不同的字符。如果字符之間的間隔過小,OCR引擎可能會將相鄰的字符誤認為一個單一的字符或難以正確切割字符。增加間隔可以幫助OCR引擎更準確地識別和切割每個字符。 本文說明如何增加OCR間
Thumbnail
在文字辨識中,適當的增加一文字彼此間的間隔是有幫助於辨識的,原因在大多數OCR引擎在處理字符時會依賴空白區域來區分不同的字符。如果字符之間的間隔過小,OCR引擎可能會將相鄰的字符誤認為一個單一的字符或難以正確切割字符。增加間隔可以幫助OCR引擎更準確地識別和切割每個字符。 本文說明如何增加OCR間
Thumbnail
學習如何將掃描的PDF轉換為可搜索文本,並高效管理和查找文件。探索先進的OCR技術如何提升文檔處理效率。
Thumbnail
學習如何將掃描的PDF轉換為可搜索文本,並高效管理和查找文件。探索先進的OCR技術如何提升文檔處理效率。
Thumbnail
平時都在用tesseract來辨識OCR的部分,在網路上也常常聽說easyOCR比tesseract好用,就拿之前測試的OCR素材來比較看看囉。 以下輸入同樣圖片直接測試,並非絕對誰就比較準,只單純測試數字含英文的部分。 圖片素材就是15碼(英文加數字),檔名為OCR正確結果
Thumbnail
平時都在用tesseract來辨識OCR的部分,在網路上也常常聽說easyOCR比tesseract好用,就拿之前測試的OCR素材來比較看看囉。 以下輸入同樣圖片直接測試,並非絕對誰就比較準,只單純測試數字含英文的部分。 圖片素材就是15碼(英文加數字),檔名為OCR正確結果
Thumbnail
EasyOCR是一個能夠幫助你對圖片中的文字進行辨識的工具,透過進階分析,可以應用在文件掃描、自動化數據輸入、發票掃描等領域。本章節將介紹如何安裝、引用模型、進行文字辨識、以及辨識結果的分析。透過學習,你可以建立屬於自己的文字辨識系統。
Thumbnail
EasyOCR是一個能夠幫助你對圖片中的文字進行辨識的工具,透過進階分析,可以應用在文件掃描、自動化數據輸入、發票掃描等領域。本章節將介紹如何安裝、引用模型、進行文字辨識、以及辨識結果的分析。透過學習,你可以建立屬於自己的文字辨識系統。
Thumbnail
Google Tesseract Config說明,程式範例實際修改示範 前言 Tesseract 的 config 檔案用於指定 OCR 引擎的設定和參數。這些參數可以影響文本識別的結果 本文將彙整常用參數調整,並呈現不同參數出現不同的辨識結果 官網Tesseract OCR參數說明連結
Thumbnail
Google Tesseract Config說明,程式範例實際修改示範 前言 Tesseract 的 config 檔案用於指定 OCR 引擎的設定和參數。這些參數可以影響文本識別的結果 本文將彙整常用參數調整,並呈現不同參數出現不同的辨識結果 官網Tesseract OCR參數說明連結
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News