在线ocr识别,python在线识别文字(在线神站,免费OCR识别)
关于【在线ocr识别】,python在线识别文字,今天犇涌小编给您分享一下,如果对您有所帮助别忘了关注本站哦。
1、在线ocr识别:在线神站,免费OCR识别
今天分享一个在线OCR识别网站,亲测十分给力,效果明显。
网站简介
1:电脑端打开,可以看到界面有多么简洁,没有任何多余的东西
直接鼠标双击屏幕导入你要识别的文件(注意:这里支持图像格式必须是PNG、JPG或BMP;不支持识别PDF),最后可以看到识别效果,十分给力
2:手机端打开,这里直接单击屏幕,然后同样的操作,这里不再多说
2、在线ocr识别,python在线识别文字
ocr简介OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程;即,针对印刷体字符,采用光学的方式将纸质文档中的文字转换成为黑白点阵的图像文件,并通过识别软件将图像中的文字转换成文本格式,供文字处理软件进一步编辑加工的技术。如何除错或利用辅助信息提高识别正确率,是OCR最重要的课题,ICR(Intelligent Character Recognition)的名词也因此而产生。衡量一个OCR系统性能好坏的主要指标有:拒识率、误识率、识别速度、用户界面的友好性,产品的稳定性,易用性及可行性等。
随着云计算,大数据和AI技术的快速发展,OCR技术也相对比较成熟。在网络中也可以很方便地找到OCR识别软件,不管是离线工具还是在线识别,OCR识别率还是蛮高的。
一个普通的OCR识别软件大致的工作流程如下:
- 影像输入;
- 影像前处理;
- 文字特征抽取;
- 比对识别;
- 人工校正;
- 结果输出;
对待识别图像进行如下预处理,可以降低特征提取算法的难度,并能提高识别的精度:
- 二值化:由于彩色图像所含信息量过于巨大,在对图像中印刷体字符进行识别处理前,需要对图像进行二值化处理,使图像只包含黑色的前景信息和白色的背景信息,提升识别处理的效率和精确度。
- 图像降噪:由于待识别图像的品质受限于输入设备、环境、以及文档的印刷质量,在对图像中印刷体字符进行识别处理前,需要根据噪声的特征对待识别图像进行去噪处理,提升识别处理的精确度。
下面我们通过python开发一个OCR在线识别系统,该系统提供一个简单的web界面,支持上传一张包含中文字符的图片,经过系统的识别后,可以提取出图片中包含的文字,并将文字输出到web界面。
OCR在线识别系统特性:
- 在线识别功能;
- OCR engine提供socket服务;
- 可以支持TCP Server模式;
- 也可以支持命令行模式;
python版本信息如下:
python.exe --versionPython 3.8.6
安装系统所依赖的python库:
pip install easyocrpip install twistedpip install loggingpip install django
- easyocr图像处理的库以及文字处理的库;
- twisted支持TCP Server的库;
- logging支持日志输出的库;
- django支持web的库;
OCR engine核心代码:
#!/usr/bin/python# -*- coding: UTF-8 -*-import sys, getoptimport loggingfrom abc import ABCimport easyocrfrom twisted.internet import reactorfrom twisted.internet.protocol import Serverfactoryfrom twisted.protocols.basic import LineReceiverlogging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')logger = logging.getLogger(__name__)def server(port): class SimpleServerFactory(ServerFactory): reader = None def __init__(self, reader): self.reader = reader class SimpleReceiver(LineReceiver, ABC): def connectionMade(self): logger.info('Got connection from %s', self.transport.client) def connectionLost(self, reason): logger.info('%s disconnected', self.transport.client) def dataReceived(self, data): if type(data) == bytes: logger.info("Received data ...") else: logger.info("Received data:%s", data) result = reader.readtext(data, detail=0) str = ''; for item in result: str = str item self.sendLine(str.encode()) logger.info("Send response: %s", str) # need to run only once to load model into memory reader = easyocr.Reader(['ch_sim', 'en']) factory = SimpleServerFactory(reader) factory.protocol = SimpleReceiver reactor.listenTCP(port, factory) logger.info("TCP server started on port(s): %s ..." % (port)) reactor.run()def main(argv): port = 0 if len(argv) == 0: print('usage: ocr_server.py -p <port>') sys.exit(1) try: opts, args = getopt.getopt(argv, "?hp:", ["port="]) except getopt.GetoptError: print('usage: ocr_server.py -p <port>') sys.exit(2) if len(opts) == 0: print('usage: ocr_server.py -p <port>') sys.exit(3) for opt, arg in opts: if opt == '-h': print('usage: ocr_server.py -p <port>') sys.exit() elif opt in ("-p", "--port"): port = arg else: print('usage: ocr_server.py -p <port>') sys.exit(4) if int(port) == 0: print('usage: ocr_server.py -p <port>') sys.exit(5) server(int(port))if __name__ == '__main__': main(sys.argv[1:])
如何启动OCR engine呢?
python.exe ocr_engine.pyusage: ocr_engine.py -p <port>
-p是指OCR engine所使用的端口号;
python.exe ocr_engine.py -p 80012020-11-04 18:08:23,224 - easyocr.easyocr - WARNING - CUDA not available - defaulting to CPU. Note: This module is much faster with a GPU.2020-11-04 18:08:26,092 - __main__ - INFO - TCP server started on port(s): 8001 ...
这样就启动了一个在8001端口监听的OCR engine服务。
使用Django构建一个Web应用urls.py
urlpatterns = [ path('', views.index), path('index.html', views.index), path('ocr.html', views.ocr)]
html页面内容:
<!DOCTYPE html><html><head><meta charset="utf-8"><title>OCR在线识别</title> <style type="text/css"> .upload_file { height: 100px; width: 800px; vertical-align:middle; } .upload_file form{ margin-top: 50px; margin-left: 50px; } .result { height: 100px; line-height: 100px; margin-left: 50px; font-size: 20px; } h2{ margin-top: 20px; margin-left: 50px; } </style></head><body> <h2>OCR在线识别系统</h2> <div class="upload_file"> <form action="/ocr.html" method="POST" enctype="multipart/form-data"> 上传图片: <input id="f" type="file" name="img"> <input type="hidden" name="csrf_token" value="{{ csrf_token }}" /> <input id="sub" type="submit" value="文字识别"> </form> </div> <div class="result"> <b>识别结果:</b> <b>{{ result }}</b> </div></body></html>
views.py
def index(request): result = "" return render(request, "index.html", {"result": result})def ocr(request): tcp_client_socket = socket(AF_INET, SOCK_STREAM) tcp_client_socket.connect(('localhost', 9000)) img = request.FILES.get("img") data = img.read() tcp_client_socket.send(data) # 此处与udp不同,客户端已经知道消息来自哪台服务器,不需要用recvfrom了 recv_data = tcp_client_socket.recv(1024) result = recv_data.decode('utf-8') tcp_client_socket.close() return render(request, "index.html", {"result": result})
分别启动OCR engine和Django应用
python.exe ocr_engine.py -p 9000
在9000端口启动OCR engine。
python.exe manage.py runserver 8000Run 'python manage.py migrate' to apply them.November 06, 2020 - 16:04:55Django version 3.1.3, using settings 'ocr-demo.settings'Starting development server at http://127.0.0.1:8000/Quit the server with CTRL-BREAK.
在8000端口启动Django系统。
在浏览器地址栏输入:http://localhost:8000
上传图片界面:
识别后效果:
测试图片:
视频演示效果:
本文关键词:在线ocr识别 腾讯,在线ocr文字识别软件,在线ocr识别表格,ocr识别网站,在线ocr识别软件。这就是关于《在线ocr识别,python在线识别文字(在线神站,免费OCR识别)》的所有内容,希望对您能有所帮助!更多的知识请继续关注《犇涌向乾》百科知识网站:http://www.029ztxx.com!
版权声明: 本站仅提供信息存储空间服务,旨在传递更多信息,不拥有所有权,不承担相关法律责任,不代表本网赞同其观点和对其真实性负责。如因作品内容、版权和其它问题需要同本网联系的,请发送邮件至 举报,一经查实,本站将立刻删除。