OCR EasyOCR + PaddleHub 光学字符识别(Optical Character Recognition, OCR)

本文主要是介绍OCR EasyOCR + PaddleHub 光学字符识别(Optical Character Recognition, OCR),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

EasyOCR

pip install opencv-python
pip3 install easyocr

简单测试一下

import os
import easyocr
import cv2
from matplotlib import pyplot as plt
import numpy as np
import ssl
ssl._create_default_https_context = ssl._create_unverified_contextIMAGE_PATH = 'Perform-OCR-using-C.jpg'
IMAGE_PATH = 'a.PNG'reader = easyocr.Reader(['en'],gpu=False)
result = reader.readtext(IMAGE_PATH,paragraph="False")
print(result)

问题处理

模型下载

import ssl
ssl._create_default_https_context = ssl._create_unverified_context
# 全局取消证书验证
[easyocr下载模型失败](https://www.cnblogs.com/yqpy/p/14344355.html)

有时不显示下载进度,手动“enter”助力显示:
为了加快速度可以加一些判断,比如前后两帧是否一样

opencv报错

cv2.error: Unknown C++ exception from OpenCV code
pip install opencv-python==4.1.2.30 -i https://pypi.tuna.tsinghua.edu.cn/simple

代码测试

import os
import easyocr
import cv2
from matplotlib import pyplot as plt
import numpy as np
import ssl
ssl._create_default_https_context = ssl._create_unverified_contextIMAGE_PATH = 'Perform-OCR-using-C.jpg'# https://blog.aspose.com/wp-content/uploads/sites/2/2020/05/Perform-OCR-using-C.jpgreader = easyocr.Reader(['ch_sim'],gpu=False)
result = reader.readtext(IMAGE_PATH,paragraph="False")
print(result)img = cv2.imread(IMAGE_PATH)
top_left = tuple(result[0][0][0])
bottom_right = tuple(result[0][0][2])
text = result[0][1]
font = cv2.FONT_HERSHEY_SIMPLEX
img = cv2.rectangle(img,top_left,bottom_right,(0,255,255),3)
img = cv2.putText(img,text,bottom_right, font, 0.5,(0,255,0),2,cv2.LINE_AA)
plt.figure(figsize=(10,10))
plt.imshow(img)
plt.show()

字体处理

https://ultralytics.com/assets/Arial.ttf
Python图像处理库PIL的ImageFont模块介绍
在如下地址拷贝字体文件到项目:

C:\Windows\Fonts

在这里插入图片描述

[官方文档](https://www.easyproject.cn/easyocr/zh-cn/index.jsp#readme)
[代码教程:使用 EasyOCR 从图像中检测文本](https://zhuanlan.zhihu.com/p/413310223)
[添加链接描述](https://pythondict.com/ai/easyocr/)
[视频教程](https://www.bilibili.com/video/BV1x3411Y72t?)

报错

File "C:\Users\user\Anaconda3\lib\site-packages\easyocr\detection.py", line 2, in <module>import torch.backends.cudnn as cudnn    ModuleNotFoundError: No module named 'torch.backends'

PaddleHub一键OCR

安装环境

# python环境
conda create --name paddle_env python=3.8 --channel https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ # 安装paddlepaddle  默认安装CPU版本 https://www.paddlepaddle.org.cn/  不使用vpn
pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple# 安装hub https://github.com/PaddlePaddle/PaddleHub/blob/release/v2.1/README_ch.md
pip install paddlehub -i https://mirror.baidu.com/pypi/simple# 安装模型
hub install chinese_ocr_db_crnn_server==1.1.0

使用

def recognize_text(images=[],paths=[],use_gpu=False,output_dir='ocr_result',visualization=False,box_thresh=0.5,text_thresh=0.5)参数paths (list[str]): 图片的路径;
images (list[numpy.ndarray]): 图片数据,ndarray.shape 为 [H, W, C],BGR格式;
use_gpu (bool): 是否使用 GPU;若使用GPU,请先设置CUDA_VISIBLE_DEVICES环境变量
box_thresh (float): 检测文本框置信度的阈值;
text_thresh (float): 识别中文文本置信度的阈值;
visualization (bool): 是否将识别结果保存为图片文件;
output_dir (str): 图片的保存路径,默认设为 ocr_result;
返回res (list[dict]): 识别结果的列表,列表中每一个元素为 dict,各字段为:
data (list[dict]): 识别文本结果,列表中每一个元素为 dict,各字段为:
text(str): 识别得到的文本
confidence(float): 识别文本结果置信度
text_box_position(list): 文本框在原图中的像素坐标,4*2的矩阵,依次表示文本框左上,右上,右下,左下顶点的坐标 如果无识别结果则data为[]
save_path (str, optional): 识别结果的保存路径,如不保存图片则save_path为''
import paddlehub as hub
import cv2ocr = hub.Module(name="chinese_ocr_db_crnn_server")
result = ocr.recognize_text(images=[cv2.imread(IMAGE_PATH)])
print(123)
ImportError: This module requires the shapely, pyclipper tools. The running environment does not meet the requirements. Please install the two packages.
pip install shapely
pip install pyclipper
对于图片
https://blog.aspose.com/wp-content/uploads/sites/2/2020/05/Perform-OCR-using-C.jpg
运行1000的时间为212秒

官方教程链接,官方中还有创建网络服务功能。

paddle运行的报错:
The _initialize method in HubModule will soon be deprecated, you can use the __init__() to handle the initialization of the object
W0423 10:10:09.251121   620 analysis_predictor.cc:1350] Deprecated. Please use CreatePredictor instead.

返回值


[{
'save_path': '', 
'data': [{'text': '****年**月**日星期* **:**:**', 'confidence': 0.9879583120346069, 'text_box_position': [[58, 33], [1024, 33], [1024, 96], [58, 96]]}, {'text': '*****', 'confidence': 0.9997267723083496, 'text_box_position': [[960, 201], [1480, 189], [1485, 522], [965, 534]]}, {'text': '*****', 'confidence': 0.9997847676277161, 'text_box_position': [[1066, 1230], [1176, 1230], [1176, 1374], [1066, 1374]]}]
}]
'text_box_position': [[58, 33], [1024, 33], [1024, 96], [58, 96]]作为一个方形区域的四角,分别为 左上,右上,右下,左下的顺时针顺序。data = result[0]['data']

这篇关于OCR EasyOCR + PaddleHub 光学字符识别(Optical Character Recognition, OCR)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1874

相关文章

Spring Boot集成Tess4J实现OCR

1.什么是Tess4j? Tesseract是一个开源的光学字符识别(OCR)引擎,它可以将图像中的文字转换为计算机可读的文本。支持多种语言和书面语言,并且可以在命令行中执行。它是一个流行的开源OCR工具,可以在许多不同的操作系统上运行。Tess4J是一个基于Tesseract OCR引擎的Java接口,可以用来识别图像中的文本,说白了,就是封装了它的API,让Java可以直接调用。 Tess

深度剖析AI情感陪伴类产品及典型应用 Character.ai

前段时间AI圈内C.AI的受够风波可谓是让大家都丈二摸不着头脑,连C.AI这种行业top应用都要找谋生方法了!投资人摸不着头脑,用户们更摸不着头脑。在这之前断断续续玩了一下这款产品,这次也是乘着这个风波,除了了解一下为什么这么厉害的创始人 Noam Shazeer 也要另寻他路,以及产品本身的发展阶段和情况! 什么是Character.ai? Character.ai官网:https://

推荐一款强大的OCR软件,请低调使用!

今天给大家分享一款开源的OCR识别软件,可以提升大家的办公效率——Umi-OCR,支持window​和Linux系统。 Umi-OCR支持提取一张图片或者多张图片的信息,只需通过右边的功能页选择相应的功能。 点击左边的“截图OCR”进入页面 点击“截图”按钮选取截图区域,直接在右边的记录中​提取出截图中的信息。 批量OCR功能也一样,点击左边菜单的“批量OCR”菜单

Deep Ocr

1.圈出内容,文本那里要有内容.然后你保存,并'导出数据集'. 2.找出deep_ocr_recognition_training_workflow.hdev 文件.修改“DatasetFilename := 'Test.hdict'” 310行 write_deep_ocr (DeepOcrHandle, BestModelDeepOCRFilename) 3.推理test.hdev

使用百度飞桨PaddleOCR进行OCR识别

1、代码及文档 代码:https://github.com/PaddlePaddle/PaddleOCR?tab=readme-ov-file 介绍文档:https://paddlepaddle.github.io/PaddleOCR/ppocr/overview.html 2、依赖安装 在使用过程中需要安装库,可以依据代码运行过程中的提示安装。我使用的为python3.7,安装库为:

VSCode中latex文件(Misplaced alignment tab character .LaTeX

Misplaced alignment tab character &.LaTeX 先给出参考文章1 Misplaced alignment tab character &.LaTeX 把bib文件中的 &改为 and 。删除原有的bbl文件、重新运行 选择这个运行 这个错误在overleaf上并没有遇到、在vscode上遇到了 方法二就是把 &改为 \& ,记得删除

免费OCR 文字识别工具

免费:本项目所有代码开源,完全免费。 方便:解压即用,离线运行,无需网络。 高效:自带高效率的离线OCR引擎,内置多种语言识别库。 灵活:支持命令行、HTTP接口等外部调用方式。 功能:截图OCR / 批量OCR / PDF识别 / 二维码 / 公式识别 下载地址:https://pan.quark.cn/s/f263ecc221b7

人脸识别开源项目之-face_recognition

特性 从图片里找到人脸 定位图片中的所有人脸: import face_recognitionimage = face_recognition.load_image_file("your_file.jpg")face_locations = face_recognition.face_locations(image) 识别人脸关键点 识别人脸关键点,包括眼睛、鼻子、嘴和下巴。

Java Character 类 和 方法

Character 类用于对单个字符进行操作。 Character 类在对象中包装一个基本类型 char 的值 实例 char ch = 'a';// Unicode 字符表示形式char uniChar = '\u039A'; // 字符数组char[] charArray ={ 'a', 'b', 'c', 'd', 'e' }; 然而,在实际开发过程中,我们经常会遇到需要使用对象

Attribute Recognition简记1-Video-Based Pedestrian Attribute Recognition

创新点 1.行人属性库 2.行人属性识别的RNN框架及其池化策略 总结 先看看行人属性识别RNN结构: backbone是ResNet50,输出是每一帧的空间特征。这组特征被送到两个分支,分别是空间池化和时间建模。最后两种特征拼接。然后分类(FC)。 LSTM关注帧间变化。受cvpr《Recurrent Convolutional Network for Video-Based Person