当前位置: 首页 > news >正文

C#本地使用离线ocr库识别图片中文本,工具包PaddleOCRSharp

C#本地使用离线ocr库识别图片文本,工具包PaddleOCRSharp

PaddleOCRSharp介绍

项目地址:https://github.com/raoyutian/PaddleOCRSharp

PaddleOCRSharp 是一个.NET版本OCR可离线使用类库。项目核心组件PaddleOCR.dll目前已经支持C\C++、.NET、Python、Golang、Rust、java等众多开发语言的直接API接口调用。项目包含文本识别、文本检测、表格识别功能。本项目做了大量优化,提高了识别率和推理性能。包含总模型仅8.6M的超轻量级中文OCR,单模型支持中英文数字组合识别、竖排文本识别、长文本识别。同时支持中英文、纯英文以及多种语言文本检测识别。

PaddleOCRSharp封装极其简化,实际调用仅几行代码,极大的方便了中下游开发者的使用和降低了PaddleOCR的使用入门级别,同时提供不同的.NET框架使用,方便各个行业应用开发与部署。Nuget包即装即用,可以离线部署,不需要网络就可以识别的高精度中英文OCR。

本项目支持官方所有公开的通用OCR模型,如:PPOCRV2、PPOCRV3、PPOCRV4、PP-OCRv4_server、PP-OCRv4_server_doc(1.5万字符字典模型)。最新版默认使用中英文V4模型ch_PP-OCRv4

我的测试使用框架:

.NET9

  • WPF
  • nuget包:PaddleOCRSharp

XAML代码:

<Window x:Class="WpfOCR.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:WpfOCR"mc:Ignorable="d"Title="MainWindow" Height="850" Width="900" FontSize="22" WindowStartupLocation="CenterScreen"><Grid><Grid.RowDefinitions><RowDefinition Height="140"></RowDefinition><RowDefinition Height="*"></RowDefinition></Grid.RowDefinitions><StackPanel Grid.Row="0" Orientation="Vertical" ><TextBlock   Margin="5" TextWrapping="Wrap" Text="选择待识别图片:" VerticalAlignment="Top" HorizontalAlignment="Left" /><TextBox Margin="5" x:Name="imgDetectionPath"  TextWrapping="Wrap" Text="" Width="680" HorizontalAlignment="Left" /><Button Margin="5" Content="识别" Click="Button_Click" Width="96" HorizontalAlignment="Left" VerticalAlignment="Top" /></StackPanel><Grid Grid.Row="1"    ><Grid.RowDefinitions><RowDefinition Height="auto"   ></RowDefinition><RowDefinition Height="*"></RowDefinition></Grid.RowDefinitions><TextBlock  Grid.Row="0" HorizontalAlignment="Left"  TextWrapping="Wrap" Text="识别结果:" VerticalAlignment="Top" /><TextBox Grid.Row="1"       x:Name="txtResult" VerticalScrollBarVisibility="Auto"  HorizontalAlignment="Stretch"    TextWrapping="Wrap" AcceptsReturn="True" Text="" VerticalAlignment="Stretch" /></Grid></Grid>
</Window>

后台代码:

using PaddleOCRSharp;
using System.Drawing;
using System.IO;
using System.Security.Cryptography;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;namespace WpfOCR;/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{public MainWindow(){InitializeComponent();}//识别private void Button_Click(object sender, RoutedEventArgs e){string imgPath = this.imgDetectionPath.Text;var imagebyte = File.ReadAllBytes(imgPath);Bitmap bitmap = new Bitmap(new MemoryStream(imagebyte));OCRModelConfig config = null;OCRParameter oCRParameter = new OCRParameter();oCRParameter.use_gpu = true;//当使用GPU版本的预测库时,该参数打开才有效果OCRResult ocrResult = null;PaddleOCREngine engine = new PaddleOCREngine(config, oCRParameter);ocrResult = engine.DetectText(bitmap);List<OcrResult>? ocrResults = System.Text.Json.JsonSerializer.Deserialize<List<OcrResult>>(ocrResult.JsonText);StringBuilder stringBuilder = new StringBuilder();string text = string.Join(System.Environment.NewLine, ocrResults.Select(g => g.Text));this.txtResult.Text = text;}public record OcrResult(string Text);}

待识别图片
在这里插入图片描述
识别结果:
在这里插入图片描述

相关文章:

  • Git Bash 下使用 SSH 连接出现 “Software caused connection abort” 问题
  • 从基础到实战的量化交易全流程学习:1.3 数学与统计学基础——概率与统计基础 | 基础概念
  • Spark Streaming实时数据处理实战:从DStream基础到自定义数据源集成
  • 如何避免爬虫因Cookie过期导致登录失效
  • Kubernetes学习笔记-配置Service对接第三方访问
  • iOS 类与对象底层原理
  • 深度学习常见框架:TensorFlow 与 PyTorch 简介与对比
  • Postman接口测试: postman设置接口关联,实现参数化
  • 超级创新思路:基于CBAM-Transformer的强化学习时间序列预测模型(Python\matlab实现)
  • 【仿Mudou库one thread per loop式并发服务器实现】服务器边缘测试+性能测试
  • 小结: DHCP
  • Haply MinVerse触觉3D 鼠标—沉浸式数字操作,助力 3D 设计与仿真
  • 【QT】QT多线程
  • MySQL----查询
  • 计算机组成原理系列3--存储系统
  • 【C语言操作符详解(一)】--进制转换,原反补码,移位操作符,位操作符,逗号表达式,下标访问及函数调用操作符
  • 《代码整洁之道》全书归纳
  • SpringMVC 通过ajax 前后端数据交互
  • Scala集合操作与WordCount案例实战总结
  • Linux命令-iostat
  • 伊朗港口爆炸死亡人数升至70人
  • 今年地质灾害防治形势严峻,哪些风险区被自然资源部点名?
  • 当哲学与戏剧作为一种生活方式——《人生六戏》分享会
  • 《我的后半生》:人生下半场,也有活力重启的可能
  • 国家市监总局:民生无小事,严打民生领域侵权假冒违法行为
  • 神舟二十号载人飞船发射升空