C# 通用OCR识别 文字识别 中文识别
软件说明
基于以下两个开源项目,做了再次封装
https://github.com/paddlepaddle/PaddleOCR
可以一键开启服务;
自带模型,可离线部署;
自带C++相关动态库;
测试地址
http://47.108.88.211/manual/OCRTest.html
软件目录

软件界面

测试
选择图片测试效果

截图识别效果

html页面测试效果


接口调用测试效果

VB调用代码
Dim request As WebRequest = WebRequest.Create("http://47.108.88.211:8082/ocr/base64")
request.Method = "POST"
Dim postData As String = "base64str=%2F9j%2F4AAQSkZJRgABAQEAYABgAAD%2F2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL%2F2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL%2FwAARCAAYAE8DASIAAhEBAxEB%2F8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL%2F8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4%2BTl5ufo6erx8vP09fb3%2BPn6%2F8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL%2F8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3%2BPn6%2F9oADAMBAAIRAxEAPwD1PUdStNKtTc3kvlxjgcZJPoBWbpXi7S9Xufs0LSRzH7qyrjd9Oafr2gR641oZpzHFbuXZNuQ4%2Fp%2F9euWVItZ8cQNpkQS1s8b5UGFbb%2FnFeZOcovQ9vC4ehUpvmbvZvyVtr%2Bp1eseJ9N0RxHdSO0xGfLjXJx6ntU2ka7Ya3Ez2chJT7yOMMv4VxWpbdJ8cXF9qtvJNayjMb7Nw6DHXjjBFO8JyxTeKb%2B%2FtU8ixWNmIPAUHGP5E1KrS57G7wFP6vzq97Xv09DsNa8QWOhJEbsuWlPypGAT9evSm3viTTrLTLfUJHkaC4%2F1ZRck8ZrgdVuF10arqssihIsRWsbNzjIycfT%2BddhoUcM%2FgiFXVJAkDZDANg8%2FrTjVcpNImeCp0qMZyve6T%2Baua2k6xa61atcWhfarbWDjBBq%2FXG%2FDr%2FkD3P%2FXb%2FwBlFdlWlOTlFNnDjKUaVaUI7IKKKK0OY5vxgusT6fHbaXCzrKSJmQgMB6fjWJ4eGv6S0NqmjIIXkHmuThiO5znsKKK5ZfGerhKt8M4OKt8%2F8zoPFqanPpa2%2BmweY8zbXcEZRfUf40ukeG7aw0J9Pky%2FnqfOcHBYkf0oorblTlqc8684UOSO1zH1fwHZJpkz6fHK90ADGpk688%2FpmtXw9oZ0zw40BjKXM8ZMqls%2FMRgUUVCpxUtCpY2vVo2m76kXgnTLrTNLmju4jFI02QpPbAFdNRRWkVaKsY4qbqVZTluFFFFWcx%2F%2F2Q%3D%3D"
Dim byteArray As Byte() = Encoding.UTF8.GetBytes(postData)
request.ContentType = "application/x-www-form-urlencoded"
request.ContentLength = byteArray.Length
Dim dataStream As Stream = request.GetRequestStream()
dataStream.Write(byteArray, 0, byteArray.Length)
dataStream.Close()
Dim response As System.Net.HttpWebResponse = CType(request.GetResponse(), System.Net.HttpWebResponse)
Dim ReStream As StreamReader = New StreamReader(response.GetResponseStream, System.Text.Encoding.GetEncoding("utf-8"))
Dim resStr As String = ReStream.ReadToEnd()
response.Close()
MsgBox(resStr)
C#调用代码
var client = new RestClient("http://47.108.88.211:8082/ocr/base64");
var request = new RestRequest(Method.POST);
request.AddHeader("content-type", "application/x-www-form-urlencoded");
request.AddParameter("application/x-www-form-urlencoded", "base64str=%2F9j%2F4AAQSkZJRgABAQEAYABgAAD%2F2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL%2F2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL%2FwAARCAAYAE8DASIAAhEBAxEB%2F8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL%2F8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4%2BTl5ufo6erx8vP09fb3%2BPn6%2F8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL%2F8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3%2BPn6%2F9oADAMBAAIRAxEAPwD1PUdStNKtTc3kvlxjgcZJPoBWbpXi7S9Xufs0LSRzH7qyrjd9Oafr2gR641oZpzHFbuXZNuQ4%2Fp%2F9euWVItZ8cQNpkQS1s8b5UGFbb%2FnFeZOcovQ9vC4ehUpvmbvZvyVtr%2Bp1eseJ9N0RxHdSO0xGfLjXJx6ntU2ka7Ya3Ez2chJT7yOMMv4VxWpbdJ8cXF9qtvJNayjMb7Nw6DHXjjBFO8JyxTeKb%2B%2FtU8ixWNmIPAUHGP5E1KrS57G7wFP6vzq97Xv09DsNa8QWOhJEbsuWlPypGAT9evSm3viTTrLTLfUJHkaC4%2F1ZRck8ZrgdVuF10arqssihIsRWsbNzjIycfT%2BddhoUcM%2FgiFXVJAkDZDANg8%2FrTjVcpNImeCp0qMZyve6T%2Baua2k6xa61atcWhfarbWDjBBq%2FXG%2FDr%2FkD3P%2FXb%2FwBlFdlWlOTlFNnDjKUaVaUI7IKKKK0OY5vxgusT6fHbaXCzrKSJmQgMB6fjWJ4eGv6S0NqmjIIXkHmuThiO5znsKKK5ZfGerhKt8M4OKt8%2F8zoPFqanPpa2%2BmweY8zbXcEZRfUf40ukeG7aw0J9Pky%2FnqfOcHBYkf0oorblTlqc8684UOSO1zH1fwHZJpkz6fHK90ADGpk688%2FpmtXw9oZ0zw40BjKXM8ZMqls%2FMRgUUVCpxUtCpY2vVo2m76kXgnTLrTNLmju4jFI02QpPbAFdNRRWkVaKsY4qbqVZTluFFFFWcx%2F%2F2Q%3D%3D", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
JAVA调用代码
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, "base64str=%2F9j%2F4AAQSkZJRgABAQEAYABgAAD%2F2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL%2F2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL%2FwAARCAAYAE8DASIAAhEBAxEB%2F8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL%2F8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4%2BTl5ufo6erx8vP09fb3%2BPn6%2F8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL%2F8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3%2BPn6%2F9oADAMBAAIRAxEAPwD1PUdStNKtTc3kvlxjgcZJPoBWbpXi7S9Xufs0LSRzH7qyrjd9Oafr2gR641oZpzHFbuXZNuQ4%2Fp%2F9euWVItZ8cQNpkQS1s8b5UGFbb%2FnFeZOcovQ9vC4ehUpvmbvZvyVtr%2Bp1eseJ9N0RxHdSO0xGfLjXJx6ntU2ka7Ya3Ez2chJT7yOMMv4VxWpbdJ8cXF9qtvJNayjMb7Nw6DHXjjBFO8JyxTeKb%2B%2FtU8ixWNmIPAUHGP5E1KrS57G7wFP6vzq97Xv09DsNa8QWOhJEbsuWlPypGAT9evSm3viTTrLTLfUJHkaC4%2F1ZRck8ZrgdVuF10arqssihIsRWsbNzjIycfT%2BddhoUcM%2FgiFXVJAkDZDANg8%2FrTjVcpNImeCp0qMZyve6T%2Baua2k6xa61atcWhfarbWDjBBq%2FXG%2FDr%2FkD3P%2FXb%2FwBlFdlWlOTlFNnDjKUaVaUI7IKKKK0OY5vxgusT6fHbaXCzrKSJmQgMB6fjWJ4eGv6S0NqmjIIXkHmuThiO5znsKKK5ZfGerhKt8M4OKt8%2F8zoPFqanPpa2%2BmweY8zbXcEZRfUf40ukeG7aw0J9Pky%2FnqfOcHBYkf0oorblTlqc8684UOSO1zH1fwHZJpkz6fHK90ADGpk688%2FpmtXw9oZ0zw40BjKXM8ZMqls%2FMRgUUVCpxUtCpY2vVo2m76kXgnTLrTNLmju4jFI02QpPbAFdNRRWkVaKsY4qbqVZTluFFFFWcx%2F%2F2Q%3D%3D");
Request request = new Request.Builder()
.url("http://47.108.88.211:8082/ocr/base64")
.post(body)
.addHeader("content-type", "application/x-www-form-urlencoded")
.build();
Response response = client.newCall(request).execute();
Python3调用代码
import http.client
conn = http.client.HTTPConnection("47.108.88.211:8082")
payload = "base64str=%2F9j%2F4AAQSkZJRgABAQEAYABgAAD%2F2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL%2F2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL%2FwAARCAAYAE8DASIAAhEBAxEB%2F8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL%2F8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4%2BTl5ufo6erx8vP09fb3%2BPn6%2F8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL%2F8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3%2BPn6%2F9oADAMBAAIRAxEAPwD1PUdStNKtTc3kvlxjgcZJPoBWbpXi7S9Xufs0LSRzH7qyrjd9Oafr2gR641oZpzHFbuXZNuQ4%2Fp%2F9euWVItZ8cQNpkQS1s8b5UGFbb%2FnFeZOcovQ9vC4ehUpvmbvZvyVtr%2Bp1eseJ9N0RxHdSO0xGfLjXJx6ntU2ka7Ya3Ez2chJT7yOMMv4VxWpbdJ8cXF9qtvJNayjMb7Nw6DHXjjBFO8JyxTeKb%2B%2FtU8ixWNmIPAUHGP5E1KrS57G7wFP6vzq97Xv09DsNa8QWOhJEbsuWlPypGAT9evSm3viTTrLTLfUJHkaC4%2F1ZRck8ZrgdVuF10arqssihIsRWsbNzjIycfT%2BddhoUcM%2FgiFXVJAkDZDANg8%2FrTjVcpNImeCp0qMZyve6T%2Baua2k6xa61atcWhfarbWDjBBq%2FXG%2FDr%2FkD3P%2FXb%2FwBlFdlWlOTlFNnDjKUaVaUI7IKKKK0OY5vxgusT6fHbaXCzrKSJmQgMB6fjWJ4eGv6S0NqmjIIXkHmuThiO5znsKKK5ZfGerhKt8M4OKt8%2F8zoPFqanPpa2%2BmweY8zbXcEZRfUf40ukeG7aw0J9Pky%2FnqfOcHBYkf0oorblTlqc8684UOSO1zH1fwHZJpkz6fHK90ADGpk688%2FpmtXw9oZ0zw40BjKXM8ZMqls%2FMRgUUVCpxUtCpY2vVo2m76kXgnTLrTNLmju4jFI02QpPbAFdNRRWkVaKsY4qbqVZTluFFFFWcx%2F%2F2Q%3D%3D"
headers = {
'content-type': "application/x-www-form-urlencoded"
}
conn.request("POST", "/ocr/base64", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
C# 通用OCR识别 文字识别 中文识别的更多相关文章
- ffmpeg Tesseract-OCR 识别文字滤镜 中文识别输出文本
ffprobe -show_entries frame_tags=lavfi.ocr.text -f lavfi -i "movie=in.tif,ocr=datapath=tessdata ...
- tesseract-ocr识别英文和中文图片文字以及扫描图片实例讲解
本文来源:http://blog.csdn.net/wanghui2008123/article/details/37694307 本文参考http://blog.sina.com.cn/s/blog ...
- 一篇文章搞定百度OCR图片文字识别API
一篇文章搞定百度OCR图片文字识别API https://www.jianshu.com/p/7905d3b12104
- 【图片识别】Java中使用tess4J进行图片文字识别(支持中文)(转)
http://blog.csdn.net/wsk1103/article/details/54173282 java中识别文字比较简单,使用的软件是tesseractocr(使用的版本是3.02,3以 ...
- Python人工智能识别文字内容(OCR)
环境准备 安装pytesseract和PIL 安装这两个包可以借助pip命令行安装 pip install PIL pip install pytesseract 安装识别引擎tesseract-oc ...
- Android ocr识别文字介绍(文字识别)
最近在做身份证号码识别,在网上搜索的一番后发现目前开源的OCR中tesseract-ocr算是比较强大的了,它由HP于1985年到1995年间开发,后来由google直接负责,经过谷歌进一步开发后,目 ...
- 支持批量图片转文字的【OCR】文字识别工具,支持截图识别,速度快,准确度高,免费OCR,开源软件
想必大家偶尔也有需要从图片中提取文字的需求,虽然现在手机上都自带了拍照识别功能,可是从电脑上的图片传到手机识别再将结果发回来实 在是有点麻烦,尤其当图片数量较多时,更是费时费力,使用网页版工具又要面临 ...
- Python实战:截图识别文字,过万使用量版本!(附源码!!)
前人栽树后人乘凉,以不造轮子为由 使用百度的图片识字功能,实现了一个上万次使用量的脚本. 系统:win10 Python版本:python3.8.6 pycharm版本:pycharm 2021.1. ...
- java从图片中识别文字
package com.dream.common; import java.awt.image.BufferedImage; import java.io.File; import java.io.I ...
- 基于tesseract-OCR进行中文识别
1. 环境准备 1.1 下载 下载Tesseract-OCR安装包,地址为: https://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-w32- ...
随机推荐
- NC16641 [NOIP2007]守望者的逃离
题目链接 题目 题目描述 恶魔猎手尤迪安野心勃勃,他背叛了暗夜精灵,率领深藏在海底的娜迦族企图叛变.守望者在与尤迪安的交锋中遭遇了围杀,被困在一个荒芜的大岛上.为了杀死守望者,尤迪安开始对这个荒岛施咒 ...
- Linux进程的创建与销毁
Linux操作系统是一种多任务.多用户的操作系统,这意味着它可以同时运行多个进程,每个进程都可以执行不同的任务. 在本文中,我们将介绍如何在Linux系统中创建和销毁进程. 进程的创建 在Linux系 ...
- MySQL树形结构表设计
两个字段: pid:父级ID parent_ids:所有经过的路径节点ID 这样设计有个好处是,可以查任意节点的所有子节点,从任意节点开始既可以向上查,也可以向下查 select * from ent ...
- Ubuntu22.04 将EFI启动分区迁移到另一块硬盘
机器上有两块硬盘, 一块已经安装了Win10, 另一块新装Ubuntu22.04, 在新硬盘上划分分区的时候, 有分出256M给 BOOT EFI, 但是安装的时候没注意, 启动分区不知道怎的跑到 W ...
- 免费接口API
前言 我们经常在不同的应用中见到镶嵌的本地地理位置气象信息,一般配合定位使用,即先获取用户位置,然后通过用户的区域请求免费的天气接口,获取气象数据,json解析后展示. 一,常用的三个接口 我常用的接 ...
- thymeleaf利用fragment解决html页面间获取context-path问题
问题说明 我使用spring boot+thymeleaf做了个项目,那前台页面都是html,里面有各种api调用和路径跳转. 大家都知道这些路径不能写死,为保证任何情况下路径的正确性,一般都是这种格 ...
- 解决linux下zip文件解压后中文乱码问题
最近项目上碰到在windows上压缩了一些图片,图片文件名称都是中文的,scp到linux下用unzip解压后文件名 全是乱码,找了半天解决方案,下面这个亲测可行,特记录一下,与大家分享: 原因: 由 ...
- 双哈希_Birthday_Cake
Birthday Cake 思路:找到每个串的公共前后缀,统计公共前后缀之间的字符串的hash值,并判断所给n个串中是否存在符合条件的串 eg:abbddab 对于该串,我们不难发现,公共前后缀是ab ...
- shell 定时清理一定时间内未使用的目录下文件脚本
配合crontab即可实现标题 使用 bash + 脚本 + 目录 bash xx.sh /root/xx/ 脚本如下: #!/bin/bash # 将current转换为时间戳,精确到秒 CURRE ...
- Notepad++设置删除当前行快捷键
Notepad++默认能实现"删除当前行"效果的快捷键是Ctrl + L,实际上这不并是真正意义上的删除当前行,而是剪切当前行. 而Eclipse中实现删除当前行的快捷键是:Ctr ...