搭建自己的OCR服务

网上看到相关文章,这里整理记录一下,仅供学习。

搭建自己的OCR服务,第一步:选择合适的开源OCR项目 - PandaCode辉 - 博客园

一、OCR是什么?

光学字符识别(Optical Character Recognition, OCR)是指对文本资料的图像文件进行分析识别处理,获取文字及版面信息的过程。

亦即将图像中的文字进行识别,并以文本的形式返回。

二、OCR的基本流程

  1. 图像输入、预处理:

不同的图像格式有不同的存储、压缩方式,目前有OpenCV、CxImage等。

  1. 二值化:

如今数码摄像头拍摄的图片大多是彩色图像,彩色图像所含信息量巨大,不适用于OCR技术。为了让计算机更快的、更好地进行OCR相关计算,

我们需要先对彩色图进行处理,使图片只剩下前景信息与背景信息。二值化也可以简单地将其理解为"黑白化"。

  1. 图像降噪:

对于不同的图像根据噪点的特征进行去噪的过程称为降噪。

  1. 倾斜校正:

由于一般用户,在拍照文档时,难以拍摄得完全符合水平平齐与竖直平齐(我本人就经常拍的歪歪扭扭),

因此拍照出来的图片不可避免的产生倾斜,这就需要图像处理软件进行校正。

  1. 版面分析:

将文档图片分段落,分行的过程称为版面分析。

  1. 字符切割:

由于拍照、书写条件的限制,经常造成字符粘连、断笔,直接使用此类图像进行OCR分析将会极大限制OCR性能。

因此需要进行字符切割,即:将不同字符之间分割开。

  1. 字符识别:

早期以模板匹配为主,后期以结合深度网络的特征提取为主。版面还原:将识别后的文字像原始文档图片那样排列,

段落、位置、顺序不变地输出到Word文档、PDF文档等,这一过程称为版面还原。

  1. 后期处理:根据特定的语言上下文的关系,对识别结果进行校正。

  2. 输出:将识别出的字符以某一格式的文本输出。

三、OCR的使用现状

ocr的发展已经有了非常多的积累,一般人或者企业使用, 都是直接使用第三方的服务,目前提供第三方服务的大企业也非常多,百度,阿里云,腾讯等等,都提供了非常方便的api接口,可以进行调用,识别的速度、精确度和效果也都是非常不错的。唯一的缺点就是api的调用是需要收费的,对于调用频次不高的个人和企业,这个费用还是非常低的。

1,为什么企业要使用开源的而不是直接使用api服务?

目前因为公司的现状,使用开源的有几个目的

  1. 每天调用的频次比较高 , 以后可能越来越高, 所以基于费用的考虑是最主要的。
  2. 目前ocr的算法研究基本趋于成熟,并且目前对识别的精度要求不是太高,目前开源项目基本能够满足。
  3. 对于cv和深度学习进行一定程度的积累和了解,为后续工作做一些铺垫。
  4. 学习开源ocr的模型构建,方便后续对于模型的更新。

2,目前常用的几个OCR开源的项目

目前针对ocr的相关开源项目还是很多的,做了一些简单的调研和试用,在这里进行记录。对于调研不准确的希望大家指出。

第一名:PaddleOCR

PaddleOCR 是百度开源的中文识别的ocr开源软件,PaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库,助力开发者训练出更好的模型,并应用落地。

支持多种OCR相关前沿算法,在此基础上打造产业级特色模型PP-OCR和PP-Structure,并打通数据生产、模型训练、压缩、预测部署全流程。

开源地址: https://github.com/PaddlePaddle/PaddleOCR.git

官网地址: https://www.paddlepaddle.org.cn/

优势
  1. github上面star非常多,项目非常活跃
  2. 模型只针对中文进行训练
  3. 后面做背书的公司非常强(baidu)
  4. 相关的中文文档非常齐全
  5. 识别的精确度比较高
  6. 安装和教程详细
  7. 支持前沿算法和标注工具
劣势
  1. 目前使用的训练模型是基于百度公司自己的PaddlePaddle框架,对于小公司来说并不主流(对比于ts或者pytorch),所使用深度学习框架为后续其他深度学习无法做很好的铺垫
  2. 项目整体比较复杂,学习成本较高

所以根据自己实际情况,我最终选择了这个百度飞浆OCR开源项目学习。

第二名:Tesseract

Tesseract 一款由HP实验室开发由Google维护的开源OCR引擎,支持多语言,多平台,使用python开发。

开源地址: https://github.com/tesseract-ocr/tesseract.git

优势
  1. github上面star非常多,项目非常活跃
  2. 识别的语言和文字非常多
  3. 后面做背书的公司非常强(google)
劣势
  1. 不是专门针对中文场景
  2. 相关文档主要是英文,对于阅读和理解起来有一定困难
  3. 学习成本比较高
  4. 源码较多,并且部分源码是c++,学习起来难度比较大

所以根据自己实际情况放弃了这个项目的学习。

第三名:EasyOCR

EasyOCR是用Python编写基于Tesseract的OCR识别库,用于图像识别输出文本,目前支持80多种语言。

开源地址: https://github.com/JaidedAI/EasyOCR.git

优势
  1. github上面的star也是比较多,但是最近不是特别活跃
  2. 支持的语言也是非常多的,多达80多种
  3. 识别的精确度尚可
劣势
  1. 从官方的页面体验来说识别的速度较慢
  2. 识别的文字种类多,学习难度较高
  3. 相关的官方文档是基于英文的,学习难度较高,对于新手不太友好

tesseract.js

js版本的Tesseract OCR,支持一百多种语言,使用也是非常简单,可以用npm安装,也可以直接在页面引用js

​https://github.com/naptha/tesseract.js.git​

mmocr

MMOCR 是基于 PyTorch 和 mmdetection 的开源工具箱,专注于文本检测,文本识别以及相应的下游任务,如关键信息提取。

​https://github.com/open-mmlab/mmocr.git​

simple-ocr-opencv

基于opencv 和numpy开源的OCR识别引擎

​https://github.com/goncalopp/simple-ocr-opencv.git​

OCRmyPDF

OCRmyPDF是基于Tesseract-OCR开发、训练的文字识别提取的开源项目。它可以将扫描或图像文件中的文本转换为可编辑的PDF文档。

Umi-OCR

Umi-OCR是基于PaddleOCR实现的一款开源的文字识别工具。它可以快速为您生成高质量的OCR模型,并提供简单易用的API,支持多种语言和文件格式。它特别适用于需要进行自定义训练的OCR应用程序。

3、OCR工具

OCRmyPDF

OCRmyPDF是基于tesseract-ocr开发、训练的文字识别提取的开源项目

​https://github.com/ocrmypdf/OCRmyPDF.git​

Umi-OCR

基于 PaddleOCR 实现的一款开源的文字识别工具,

一般开源项目,识别率肯定没有商用的那么高,只有通过训练自己的字库来提高识别率。文字识别场景,有时候就会涉及到图片处理,这里又会关联到其它强大的图像处理开源项目,如:OpenCV。这些项目中,PaddleOCR相对来说会更符合我们常见的业务场景,也支持我们自己去训练。

四、OCR实际应用场景

在本文中,我们介绍了八种常见的开源OCR框架和工具,包括Tesseract、Tesseract.js、PaddleOCR、EasyOCR、MMOCR、simple-ocr-opencv、OCRmyPDF和Umi-OCR。这些工具具有不同的特点和优势,可以根据实际需要进行选择。下面列出了这些工具的一些实际应用场景:

  • Tesseract:广泛应用于图像识别和文本转换领域,如扫描仪、数字化文档等。

  • Tesseract.js:用于网页端OCR识别,可实现将图像中的文字转为可编辑文本,适用于在线编辑器、智能表单、在线阅读器等应用场景。

  • PaddleOCR:适用于复杂文本场景下的OCR识别,比如身份证、银行卡、车牌等。

  • EasyOCR:适用于文本排列和字检测准确度要求较高的 OCR 应用场景,如名片识别、发票识别、商品标签识别等。

  • MMOCR:适用于中英文混合、竖排文字、非结构化场景下的OCR识别,如手写字、表格、小说等。

  • simple-ocr-opencv:适用于处理常见的OCR任务,如身份证、营业执照、车牌等。

  • OCRmyPDF:将扫描或图像文件中的文本转换为可编辑的PDF文档,适用于需要编辑PDF文档的场景。

  • Umi-OCR:可以帮助用户快速生成高质量的OCR模型,并支持多种语言和文件格式。适用于需要自定义训练的OCR应用程序。

五、OCR技术国内应用情况

OCR技术在信创领域中应用广泛,主要包括文字识别、表格识别、印刷体识别以及各种证件的识别。随着各种开源OCR工具的出现和不断完善,OCR技术得到了广泛应用,国内OCR技术也已相对成熟,并且得到广泛应用。常见的厂商有图鼎科技、中标信息、神州数码、讯飞OCR等,互联网公司如阿里云、腾讯云也推出了自己的OCR技术产品。

这些OCR技术可以应用于各个领域,例如:

  • 电子商务:在订单处理、发票管理、商品识别等方面的应用,提高效率和准确性。
  • 金融服务:在银行卡、身份证、证券账户等领域的识别,可以提高客户体验,降低工作量和出错率。
  • 医疗健康:在病历管理、药品监管、个人隐私信息保护等方面的应用也十分重要。

除此之外,OCR技术还可以用于政务管理、教育、交通运输、安防等各个领域。应用范围广泛,具有广阔的市场前景。

当然,OCR技术也存在一些缺陷。例如,一些手写文字识别的准确性尚待提高。在复杂环境下、格式多样化的文档处理中,OCR技术也可能出现误识别等问题。此外,OCR技术也需要不断地优化和改进,以适应新场景的需求并提高产品质量。

总体来说,OCR技术在信创领域中将会越来越重要,并且其应用也会不断扩展和深化。各家厂商可以通过技术创新、算法优化、运营推广等方面提高产品性能和竞争力,为用户带来更好的体验和服务。

综上所述,OCR技术作为一项重要的人工智能技术,已经得到了广泛的应用,并且将会越来越重要。通过使用开源的OCR框架和工具,开发者可以更灵活地构建高质量的OCR应用程序,实现更多实际的场景应用。

六、参考

搭建自己的OCR服务,第一步:选择合适的开源OCR项目 - PandaCode辉 - 博客园

http://juejin.cn/post/7261861496564940859

相关推荐
沉到海底去吧Go9 小时前
分享:图片识别改名,能识别图片中的文字并批量改名的工具,用WPF和阿里云来完成
ocr·wpf·批量图片区域识别改名
编程咕咕gu-11 小时前
Python OCR文本识别详细步骤及代码示例
人工智能·python·ocr·python基础·python教程
幸福清风1 天前
【OCR】使用Umi-OCR进行PDF文档的光学字符识别
pdf·ocr
Macdo_cn1 天前
PDF Reader Pro for Mac v4.9.0 PDF编辑/批注/OCR/转换工具 支持M、Intel芯片
pdf·ocr
熊文豪2 天前
【实用部署教程】olmOCR智能PDF文本提取系统:从安装到可视化界面实现
ocr·pdf文本提取·ai2工具·文本智能提取·gradio界面开发·深度学习应用·olmocr
qyr203 天前
百度OCR调用记录
ocr
冲上云霄的Jayden5 天前
基于CPU使用paddlex OCR识别图片内容
python·ocr·conda·paddlepaddle·paddlex·银行回执·单据提取
Kai HVZ9 天前
《PaddleOCR》—— OCR
开发语言·r语言·ocr
沉到海底去吧Go9 天前
图片OCR多区域识别并重命名图片文件,基于Python和阿里云的实现方案
python·阿里云·云计算·ocr·pdf信息提取到表格·多个区域内容提取信息到表格·批量pdf多个区域内容保存表格