[OpenCV][Python]OCR辨識影像前處理_增加邊框

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

在tesseract-ocr辨識應用中,建議的留白邊框為10pixl,若Label列印的太剛好,沒有任何的邊框時,就會辨識不到文字。

本文將帶大家如何讓圖像增加邊框。

結果圖

示意的比較誇張,我讓邊框增加100pixl,圖片大小原為211*80。

raw-image

程式碼

import cv2
import numpy as np

def add_spacing_img(img,spacing):
# 創建黑色背景的圖像
h,w = img.shape[:2]
new_height = h + 2 * spacing
new_width = w + 2 * spacing

# 如果是彩色圖
if len(img.shape) == 3 and img.shape[2] == 3:
res_img = np.zeros((new_height, new_width, 3), dtype=np.uint8)
else:
res_img = np.zeros((new_height, new_width), dtype=np.uint8)

res_img[spacing:h+spacing, spacing:w+spacing] = img

return res_img

img = cv2.imread(f'圖片路徑')
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
new_image = add_white_spacing_img(gray_img,100)

cv2.imshow('new_image',new_image)
cv2.waitKey(0)
cv2.destroyAllWindows()


函式詳細說明

函式定義

def add_spacing_img(img, spacing):

這是函式的定義。函式名為 add_spacing_img,接受兩個參數:

  • img: 要處理的圖像(可以是灰度圖或彩色圖像)。
  • spacing: 圖像四周要添加的黑色邊框寬度。

讀取圖像尺寸

h, w = img.shape[:2]

取得圖像的高度 (h) 和寬度 (w)。

定義新圖像的尺寸

new_height = h + 2 * spacing
new_width = w + 2 * spacing

定義增加間距後的新圖像的高度和寬度。新的高度是原高度加上兩倍的間距(上下各一),新的寬度是原寬度加上兩倍的間距(左右各一)。

創建黑色背景的圖像

if len(img.shape) == 3 and img.shape[2] == 3:
res_img = np.zeros((new_height, new_width, 3), dtype=np.uint8)
else:
res_img = np.zeros((new_height, new_width), dtype=np.uint8)

這段程式碼根據輸入圖像的類型創建一個黑色背景的新圖像:

  • 如果輸入圖像是彩色圖像(有三個通道),則創建一個尺寸為 (new_height, new_width, 3) 的黑色圖像。
  • 如果輸入圖像是灰度圖(只有一個通道),則創建一個尺寸為 (new_height, new_width) 的黑色圖像。

將原圖像放置在新圖像的中央

res_img[spacing:h+spacing, spacing:w+spacing] = img

這行程式碼將原圖像放置在新圖像的中央位置。具體做法是:

  • 將新圖像從第 spacing 行到第 h+spacing 行,從第 spacing 列到第 w+spacing 列的區域設置為原圖像的像素值。

假設要白色邊框,只需要更動第11行~14行。

# 如果是彩色圖像
if len(img.shape) == 3 and img.shape[2] == 3:
res_img = np.ones((new_height, new_width, 3), dtype=np.uint8) * 255
else: # 如果是灰度圖像
res_img = np.ones((new_height, new_width), dtype=np.uint8) * 255

說明

  • np.ones 創建一個所有元素為1的數組。對於彩色圖像,數組的形狀是 (new_height, new_width, 3);對於灰度圖像,數組的形狀是 (new_height, new_width)
  • * 255 將所有元素乘以255,這樣每個像素的值都會是255(對於8位圖像,255代表白色)。


最後提醒,增加邊框在OCR讀取前,在增加就好,在原圖增加白色或黑色邊框,若跟原圖背景差異太大,只會被OCR辨識模型視為雜訊而已。


其他tesseract相關文章

[OCR][Python]tesseract 辨識模型Fine tune

[OCR_應用]Tesseract-OCR_Config說明

[OCR_應用]Tesseract-OCR_擷取字元面積

[OCR][Python]測試tesseract與easyOCR誰比較準跟快

留言
avatar-img
留言分享你的想法!
avatar-img
螃蟹_crab的沙龍
147會員
259內容數
本業是影像辨識軟體開發,閒暇時間進修AI相關內容,將學習到的內容寫成文章分享。
螃蟹_crab的沙龍的其他內容
2025/03/24
在影像處理或機器學習的應用中,我們常常需要將影片逐幀擷取出來,進一步進行辨識或分析。 本篇教學將示範如何使用 Python + OpenCV 來: ✅ 讀取 MP4 影片 測試影片可由下方超連結下載,從file-examples.com下載 file-examples.com 是一個 免費提
Thumbnail
2025/03/24
在影像處理或機器學習的應用中,我們常常需要將影片逐幀擷取出來,進一步進行辨識或分析。 本篇教學將示範如何使用 Python + OpenCV 來: ✅ 讀取 MP4 影片 測試影片可由下方超連結下載,從file-examples.com下載 file-examples.com 是一個 免費提
Thumbnail
2024/10/11
本文將指導你如何修改現有的 OpenCV 程式碼,使其利用 CUDA 加速進行深度神經網絡(DNN)推理,如超分辨率圖像放大任務。這將顯著提升運行速度,特別是在高分辨率圖像處理中。 在CMake上這選項要開,才可支援DNN模組。 CMake編譯OpenCV教學文 連結 [OpenCV][Py
Thumbnail
2024/10/11
本文將指導你如何修改現有的 OpenCV 程式碼,使其利用 CUDA 加速進行深度神經網絡(DNN)推理,如超分辨率圖像放大任務。這將顯著提升運行速度,特別是在高分辨率圖像處理中。 在CMake上這選項要開,才可支援DNN模組。 CMake編譯OpenCV教學文 連結 [OpenCV][Py
Thumbnail
2024/10/10
OpenCV 提供了專門針對 CUDA 優化的模組,這些模組使用 cv2.cuda 命名空間,並且可以直接使用 GPU 進行加速。,cv2.cuda 模塊需要在 OpenCV 編譯時啟用 CUDA 支援才能使用。 本文主要比較經過CMAKE重新編譯OpenCV使其支援Cuda,原OpenCV只支援
Thumbnail
2024/10/10
OpenCV 提供了專門針對 CUDA 優化的模組,這些模組使用 cv2.cuda 命名空間,並且可以直接使用 GPU 進行加速。,cv2.cuda 模塊需要在 OpenCV 編譯時啟用 CUDA 支援才能使用。 本文主要比較經過CMAKE重新編譯OpenCV使其支援Cuda,原OpenCV只支援
Thumbnail
看更多
你可能也想看
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
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
在某些特殊情況下,需要將圖片進行黑白反轉,例如Tesseract(OCR辨識引擎)就有建議黑底白字的狀況下辨識率較高。 本文將使用 NumPy 進行影像黑白反轉,並顯示反轉前後的影像。
Thumbnail
在某些特殊情況下,需要將圖片進行黑白反轉,例如Tesseract(OCR辨識引擎)就有建議黑底白字的狀況下辨識率較高。 本文將使用 NumPy 進行影像黑白反轉,並顯示反轉前後的影像。
Thumbnail
在影像辨識中,若遇到物件與背景難以分辨的狀況下,先做一下色彩分析,知道了色彩強度階層上的像素數,有助於了解後續需要做什麼處理,比較好分割出辨識物。 若想辨識的物件與背景的RGB值過於接近,也比較好說明此狀況,為什麼較難分割出物件。 成果呈現 第一張圖:左邊為原圖,右邊為分析結果的圖,用其他顏
Thumbnail
在影像辨識中,若遇到物件與背景難以分辨的狀況下,先做一下色彩分析,知道了色彩強度階層上的像素數,有助於了解後續需要做什麼處理,比較好分割出辨識物。 若想辨識的物件與背景的RGB值過於接近,也比較好說明此狀況,為什麼較難分割出物件。 成果呈現 第一張圖:左邊為原圖,右邊為分析結果的圖,用其他顏
Thumbnail
EasyOCR是一個能夠幫助你對圖片中的文字進行辨識的工具,透過進階分析,可以應用在文件掃描、自動化數據輸入、發票掃描等領域。本章節將介紹如何安裝、引用模型、進行文字辨識、以及辨識結果的分析。透過學習,你可以建立屬於自己的文字辨識系統。
Thumbnail
EasyOCR是一個能夠幫助你對圖片中的文字進行辨識的工具,透過進階分析,可以應用在文件掃描、自動化數據輸入、發票掃描等領域。本章節將介紹如何安裝、引用模型、進行文字辨識、以及辨識結果的分析。透過學習,你可以建立屬於自己的文字辨識系統。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News