软件说明

基于以下两个开源项目,做了再次封装

https://github.com/paddlepaddle/PaddleOCR

PaddleOCRSharp: 本项目是一个基于PaddleOCR的C++代码修改并封装的.NET的OCR工具类库。包含文本识别、文本检测、基于文本检测结果的统计分析的表格识别功能,同时针对小图识别不准的情况下,做了优化,提高识别准确率。包含总模型仅8.6M的超轻量级中文OCR,单模型支持中英文数字组合识别、竖排文本识别、长文本识别。同时支持多种文本检测。

可以一键开启服务;

自带模型,可离线部署;

自带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识别 文字识别 中文识别的更多相关文章

  1. ffmpeg Tesseract-OCR 识别文字滤镜 中文识别输出文本

    ffprobe -show_entries frame_tags=lavfi.ocr.text -f lavfi -i "movie=in.tif,ocr=datapath=tessdata ...

  2. tesseract-ocr识别英文和中文图片文字以及扫描图片实例讲解

    本文来源:http://blog.csdn.net/wanghui2008123/article/details/37694307 本文参考http://blog.sina.com.cn/s/blog ...

  3. 一篇文章搞定百度OCR图片文字识别API

    一篇文章搞定百度OCR图片文字识别API https://www.jianshu.com/p/7905d3b12104

  4. 【图片识别】Java中使用tess4J进行图片文字识别(支持中文)(转)

    http://blog.csdn.net/wsk1103/article/details/54173282 java中识别文字比较简单,使用的软件是tesseractocr(使用的版本是3.02,3以 ...

  5. Python人工智能识别文字内容(OCR)

    环境准备 安装pytesseract和PIL 安装这两个包可以借助pip命令行安装 pip install PIL pip install pytesseract 安装识别引擎tesseract-oc ...

  6. Android ocr识别文字介绍(文字识别)

    最近在做身份证号码识别,在网上搜索的一番后发现目前开源的OCR中tesseract-ocr算是比较强大的了,它由HP于1985年到1995年间开发,后来由google直接负责,经过谷歌进一步开发后,目 ...

  7. 支持批量图片转文字的【OCR】文字识别工具,支持截图识别,速度快,准确度高,免费OCR,开源软件

    想必大家偶尔也有需要从图片中提取文字的需求,虽然现在手机上都自带了拍照识别功能,可是从电脑上的图片传到手机识别再将结果发回来实 在是有点麻烦,尤其当图片数量较多时,更是费时费力,使用网页版工具又要面临 ...

  8. Python实战:截图识别文字,过万使用量版本!(附源码!!)

    前人栽树后人乘凉,以不造轮子为由 使用百度的图片识字功能,实现了一个上万次使用量的脚本. 系统:win10 Python版本:python3.8.6 pycharm版本:pycharm 2021.1. ...

  9. java从图片中识别文字

    package com.dream.common; import java.awt.image.BufferedImage; import java.io.File; import java.io.I ...

  10. 基于tesseract-OCR进行中文识别

    1. 环境准备 1.1 下载 下载Tesseract-OCR安装包,地址为: https://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-w32- ...

随机推荐

  1. NC24605 [USACO 2011 Ope S]Corn Maze

    题目链接 题目 题目描述 This past fall, Farmer John took the cows to visit a corn maze. But this wasn't just an ...

  2. Git合并固定分支的某一部分至当前分支

    在 Git 中,通常使用 git merge 命令来将一个分支的更改合并到另一个分支.如果你只想合并某个分支的一部分代码,可以使用以下两种方法: 1.批量文件合并 1.1.创建并切换到一个新的临时分支 ...

  3. win32 - PE Executable and section inject

    #include <iostream> #include <Windows.h> #include <ShlObj.h> #include <Shlwapi. ...

  4. Golang gRPC学习(05): retry重试

    什么是重试 如果服务出现了错误,主要是网络,服务器出现了短暂异常的时候,该怎么办? 我们都会人工或者自动的重新连接服务试试,看服务是否恢复可用了. 这种重新进行连接服务的一种方式就是重试.如果是在微服 ...

  5. 【Android 逆向】【攻防世界】基础android

    1. 下载并安装apk,提示要输入密码 2. apk拖入到jadx中看一下 this.login.setOnClickListener(new View.OnClickListener() { // ...

  6. vscode添加gitbash终端方法

    1.打开vscode 2.点击文件,ctrl+, 3.搜索shell windows { ... // 添加如下代码 "terminal.integrated.profiles.window ...

  7. 【LeetCode哈希表#2】两个数组的交集(Set+数组)

    两个数组的交集 力扣题目链接(opens new window) 题意:给定两个数组,编写一个函数来计算它们的交集. 说明: 输出结果中的每个元素一定是唯一的. 我们可以不考虑输出结果的顺序. 思路 ...

  8. HashMap源码窥探

    目录 前言 HashMap的数据结构 HashMap的put方法 HashMap的get方法 HashMap的初始化 HashMap的containsKey方法 HashMap的putAll方法 Ha ...

  9. 【Azure 存储服务】关于对Azure Storage Account 的 Folder 权限管理和设定

    问题描述 在一个storage account下面有很多folder,需要对不同的folder设置不同的权限给到不同的用户来访问使用,怎么样设定比较合理? 问题解答 一:可以使用SAS共享访问签名进行 ...

  10. 百度爱番番基于图技术、流式计算的实时CDP建设实践

    导读:随着营销3.0时代的到来,企业愈发需要依托强大CDP能力解决其严重的数据孤岛问题,帮助企业加温线索.促活客户.但什么是CDP.好的CDP应该具备哪些关键特征?本文在回答此问题的同时,详细讲述了爱 ...