OCR识别
📨

OCR识别

图像截取

1、Image库
from PIL import Image image = Image.open('img/2.jpg') crop_area = (30, 60, 460, 130) # 左上右下 cropped_image = image.crop(crop_area)
2、opencv
import cv2 # 读取图像文件 image = cv2.imread('path_to_image.jpg') # 定义截取区域(左上角和右下角坐标) x1, y1, x2, y2 = 100, 100, 400, 400 # 截取图像部分 cropped_image = image[y1:y2, x1:x2] # 保存截取后的图像 cv2.imwrite('cropped_image.jpg', cropped_image) # 显示截取后的图像 cv2.imshow('Cropped Image', cropped_image) cv2.waitKey(0) cv2.destroyAllWindows()
3、截图特殊图像的图片
from PIL import Image, ImageDraw # 打开图片 image = Image.open("image.jpg") # 创建一个和图片大小相同的透明图层 mask = Image.new("L", image.size, 0) # 创建一个绘制对象 draw = ImageDraw.Draw(mask) # 绘制形状(例如圆形) draw.ellipse((x1, y1, x2, y2), fill=255) # 将透明图层应用于原图 masked_image = Image.composite(image, Image.new("RGB", image.size), mask) # 显示截取后的图片 masked_image.show() # 保存截取后的图片 masked_image.save("masked_image.jpg")
来源:

CnOcr中文识别

from PIL import Image from cnocr import CnOcr # 打开原图并裁剪 image = Image.open('img/test001.png') # 裁剪区域,可选 crop_area = (0, 603, 1211, 2526) cropped_image = image.crop(crop_area) # OCR识别获取数据 ocr = CnOcr() # 使用默认OCR设置 out = ocr.ocr(cropped_image)

Tesseract

需在github上下载并安装相应版本
import pytesseract # 设置识别语言为中文(简体) pytesseract.pytesseract.tesseract_cmd = '/usr/bin/tesseract' # 如果需要指定Tesseract路径 language = 'chi_sim' # 中文(简体)的语言代码 # 打开图片文件 image = Image.open('your_image_file_path.jpg') # 将图片转换为灰度图像以提高识别效果 gray_image = image.convert('L') # 使用pytesseract进行文字识别,同时指定识别语言 text = pytesseract.image_to_string(gray_image, lang=language) # 打印识别出的文字 print(text)
  • 英语:eng
  • 简体中文:chi_sim
  • 繁体中文:chi_tra
  • 法语:fra
  • 德语:deu
  • 日语:jpn
  • 韩语:kor
import cv2 import numpy as np from PIL import Image import pytesseract image = Image.open('img/2.jpg') print(image.size, image) crop_area = (30, 60, 460, 130) # 左上右下 cropped_image = image.crop(crop_area) # 将 PIL 图像转换为 numpy 数组 cropped_image_np = np.array(cropped_image) # 使用 cv2.resize 进行图像放大 resize_image = cv2.resize(cropped_image_np, None, fx=2, fy=2, interpolation=cv2.INTER_CUBIC) # 将 RGB 转换为灰度图像 image_gray = cv2.cvtColor(resize_image, cv2.COLOR_BGR2GRAY) preprocessed_image_path = './img/3.jpg' cv2.imwrite(preprocessed_image_path, image_gray) custom_config = r'--oem 3 --psm 6' text = pytesseract.image_to_string(image_gray, config=custom_config, lang="chi_sim") print(text)
其他扩展: