OCR 图像矫正

数字银月渡
• 阅读 4714

OCR(Optical Character Recognition,光学字符识别)是指电子设备检查纸上字符然后用字符识别方法将形状翻译成计算机文字的过程;采用光学的方式将纸质文档中的文字转换成为黑白点阵的图像文件,并通过识别软件将图像中的文字转换成文本格式,供文字处理软件进一步编辑加工的技术。
一般来说,OCR分为分割和识别两个部分。此文将探讨分割问题。
通常我们第一步是将用户传入的照片进行扫描,提取待识别的区域,也就如图下面将文件抠出来。

 OCR 图像矫正 OCR 图像矫正
具体步骤:
(1)获取文件轮廓
(2)获取文件四角的点坐标
(3)透视变换

导入库

import numpy as np
import cv2
import matplotlib.pyplot as plt
import math

获取文件轮廓

image = cv2.imread('原始照片.jpg')                                             #读原始照片
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)                                 #二值化
gray = cv2.GaussianBlur(gray, (5, 5), 0)                                      #高斯滤波
kernel = np.ones((3,3),np.uint8)  
dilation = cv2.dilate(gray,kernel)                                            #膨胀
edged = cv2.Canny(dilation, 30, 120)                                          #边缘提取
_, cnts, hierarchy = cv2.findContours(edged,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_NONE)
cv2.drawContours(image,cnts,-1,(0,0,255),3)

 OCR 图像矫正

获取文件四角点的坐标

cnts0=cnts[0]
cnts1=cnts[1]

rect = np.zeros((4,2), dtype="float32")

rect[0] = cnts1[np.argmin(np.sum(cnts1,axis=-1))]
rect[2] = cnts0[np.argmax(np.sum(cnts0,axis=-1))]
rect[1] = cnts1[np.argmin(np.diff(cnts1,axis=-1))]
rect[3] = cnts0[np.argmax(np.diff(cnts0,axis=-1))]

四角点的顺序:左上,右上,右下,左下
左上坐标和最小,右下坐标和最大
右上坐标差最小,左下坐标差最大(Y-X)

 OCR 图像矫正

根据四角点坐标求矫正后图像的尺寸

(tl,tr,br,bl) = rect
    
width1 = np.sqrt(((tr[0]-tl[0])**2)+((tr[1]-tl[1])**2))
width2 = np.sqrt(((br[0]-bl[0])**2)+((br[1]-bl[1])**2))
width = max(int(width1),int(width2))
    
height1 = np.sqrt(((tr[0]-br[0])**2)+((tr[1]-br[1])**2))
height2 = np.sqrt(((tl[0]-bl[0])**2)+((tl[1]-bl[1])**2))
height = max(int(height1),int(height2))
    
dst = np.array([
    [0, 0],
    [width - 1, 0],
    [width - 1, height - 1],
    [0, height - 1]], dtype = "float32")

 OCR 图像矫正

透视变换

M = cv2.getPerspectiveTransform(rect, dst)
warped = cv2.warpPerspective(image, M, (width, height))

 OCR 图像矫正

点赞
收藏
评论区
推荐文章
不是海碗 不是海碗
2年前
一文带你看透通用文字识别 OCR
随着人工智能技术的不断发展,通用文字识别OCR也变得越来越重要。通用文字识别OCR是指对文本图像进行分析,以转换图像中的文本为可用的文本形式的过程,其主要用途是提供文本可搜索和复制的功能。
Easter79 Easter79
3年前
tesseract 安装及使用
1\.安装tesseractOCR,即OpticalCharacterRecognition,光学字符识别,是指通过扫描字符,然后通过其形状将其翻译成电子文本的过程。对于图形验证码来说,它们都是一些不规则的字符,这些字符确实是由字符稍加扭曲变换得到的内容。tesseract下载地址:https://digi.bib.unimannh
Karen110 Karen110
4年前
轻松识别文字,这款Python OCR库支持超过80种语言
OCR是什么?有一款软件叫扫描全能王,想必一些小伙伴听过,这是一个OCR集成软件,可以将图像内容扫描成文字。所以说,OCR作用是对文本资料的图像文件进行分析识别处理,获取文字及版面信息。OCR的全称叫作“OpticalCharacterRecognition”,即光学字符识别。这算是生活里最常见、最有用的AI应用技术之一。细心观察便可发现,身边到处都是O
不是海碗 不是海碗
2年前
从图片提取文字的终极解决方法 ——【通用文字识别 API】
通用文字识别技术,也称为OCR(OpticalCharacterRecognition,光学字符识别),就是一种将图像或扫描件中的文字识别出来并转化为可编辑、可搜索的数字化文本的技术。
不是海碗 不是海碗
2年前
基于发票增值税OCR API设计自动识别应用系统,从此解放财务双手
增值税发票识别OCRAPI是一种基于光学字符识别(OCR)技术的API,旨在帮助用户自动识别和提取增值税发票中的文字信息。通过使用这个API,用户可以将增值税发票扫描或拍照后上传至云端,API将自动识别和提取发票中的关键信息,例如发票号码、日期、销售方名称、购买方名称等等。
Stella981 Stella981
3年前
OCR识别的Android端实现
1.OCR简介OCR(OpticalCharacterRecognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程;2.Tesseract简介Tesseract是RaySmith于1985到1995年
Stella981 Stella981
3年前
GitHub Trending第一之后,PaddleOCR再发大招:百度自研顶会SOTA算法正式开源!
要说生活里最常见、最便民的AI应用技术,OCR(OpticalCharacterRecognition,光学字符识别)当属其中之一。寻常到日常办理各种业务时的身份证识别,前沿到自动驾驶车辆的路牌识别,都少不了它的加持。作为一名开发者,各种OCR相关的需求自然也少不了:卡证识别、票据识别、汽车场景、教育场景文字识别……!(https://imgco
Stella981 Stella981
3年前
Serverless Framework + OCR 快速搭建通用文字识别应用
在日常的工作生活中,文字识别与我们息息相关,比如身份证识别、随手拍扫描、纸质文档电子化等,无不显示着文字识别技术的重要性。为此,腾讯云通用文字识别产品GeneralOCR应运而生,基于行业前沿的深度学习技术,支持将图片上的文字内容智能识别为可编辑的文本,大幅提升信息处理效率。而ServerlessFramework与OCR的结合,则为用户提供
不是海碗 不是海碗
2年前
通用文字识别OCR 之实现数字化教材
引言通用文字OCR识别API是一种功能强大的服务,可用于多场景、多语种的整图文字检测和识别,通过将OCR技术应用于学校环境,可以实现教育资源的数字化和学习过程的自动化。本文将探讨通用文字识别OCR在学校的实际应用,希望对大家有所帮助。OCR技术的基本原理和
子桓 子桓
2年前
mac电脑版Acrobat Pro DC 2021 安装 Acrobat Pro DC 2021 中文安装教程
AcrobatProDC2021支持多种文件格式的转换,包括Word、Excel、PowerPoint、HTML、图像等,用户可以将这些文件转换成PDF格式,以便于共享和分发。同时,该软件还支持OCR(光学字符识别)技术,可以将扫描的纸质文档转换成可编辑的
燕青 燕青
1年前
OCR文字识别工具:ABBYY FineReader PDF 15 for Mac 支持M1
是一款由ABBYY开发的PDF文档处理软件,旨在帮助用户快速、准确地读取、转换和处理PDF文件。该软件具备了多种强大的功能,包括OCR文字识别、表单识别、PDF编辑、注释和填充、文档比较等。ABBYYFineReaderPDF15采用了先进的OCR技术,可