Skip to content

aki-0929/PaddleOCRJson.NET

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PaddleOCRJson.NET

PaddleOCR-json v1.3.1 .net 的封装

NuGet 安装

dotnet add package PaddleOCRJson.NET

或通过 NuGet 包管理器搜索安装: PaddleOCRJson.NET

源码方式

克隆源码, 然后添加项目引用 PaddleOCRJson.csproj .

特性

  • 支持管道模式和 TCP 模式
  • TCP 客户端支持长连接和自动重连
  • 简洁的 API 设计,支持链式调用
  • 无外部依赖
  • 识别结果为 JSON 字符串,需要用户自己解析

.NET Standard version

2.0, 2.1.

依赖

使用方法

1. 设置引擎路径(远程部署忽略, 直接看2.3即可)

var enginePath = "PaddleOCR-json/PaddleOCR-json.exe";

2. 设置引擎模式和其他参数

2.1. 管道模式

var startupArgs = OcrEngineStartupArgs.WithPipeMode(enginePath);
using var engine = new OcrEngine(startupArgs);
using var cli = engine.CreateClient(); // 或者: using var cli = new OcrPipeClient(engine)

2.2. 自托管TCP模式

var startupArgs = OcrEngineStartupArgs.WithTcpMode(enginePath, IPAddress.Loopback, 0); // 设置监听地址和端口号
using var engine = new OcrEngine(startupArgs);
using var cli = engine.CreateClient(); // 或者: using var cli = new OcrTcpClient(new IPEndPoint(IPAddress.Loopback, engine.Port))

2.3. 远程TCP模式

using var cli = new OcrTcpClient(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 12345)); // IP和端口嘛

2.4. 更多参数

startupArgs
	.WithEnableMkldnn(true)             // 启用Mkldnn
	.WithCpuThreads(10)                 // 设置线程数
	.WithCpuMem(2000)                   // CPU内存限制(MB)
	.WithPrecision("fp32")              // 精度: fp32/fp16/int8
	.WithDetModelDir("models/...")      // DET模型路径
	.WithRecModelDir("models/...")      // REC模型路径
	.WithCustom("arg_int",1)            // 自定义int参数
	.WithCustom("arg_bool",true)        // 自定义bool参数
	.WithCustom("arg_str","xxxx");      // 自定义str参数

参数说明请参考: PaddleOCR-json 常用配置参数说明

所有可用参数方法请参考 OcrEngineStartupArgs.cs

3. 执行操作

var ret = string.Empty;
ret = cli.FromImageBytes(new byte[]{...});  // byte[] 会转到 base64
ret = cli.FromBase64("...");                // base64
ret = cli.FromImageFile("test.png");        // 直接使用文件路径
ret = cli.FromClipboard();                  // 没啥好说的

4. 解析结果

4.1. 返回值参考 原作者的文档

4.2. 解析示例

返回值是 JSON 字符串,格式如下:

{
  "code": 100,
  "data": [
    {
      "box": [[x1, y1], [x2, y2], [x3, y3], [x4, y4]],
      "score": 0.95,
      "text": "识别的文本"
    }
  ]
}

可以使用任何 JSON 库来解析结果,例如使用 System.Text.Json

using System.Text.Json;

var result = client.FromImageFile("test.png");
var jsonDoc = JsonDocument.Parse(result);
var code = jsonDoc.RootElement.GetProperty("code").GetInt32();
if (code == 100)
{
    var data = jsonDoc.RootElement.GetProperty("data");
    foreach (var item in data.EnumerateArray())
    {
        var text = item.GetProperty("text").GetString();
        var score = item.GetProperty("score").GetDouble();
        Console.WriteLine($"{text} (置信度: {score})");
    }
}

注意: 本库不包含 JSON 解析功能,需要用户自己解析(不想引入任何依赖)。

About

PaddleOCR-json .net 的封装

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages