TesseractOCR-GUI:基于WPF/C#构建TesseractOCR简单易用的用户界面

前言

前篇文章使用Tesseract进行图片文字识别介绍了如何安装TesseractOCR与TesseractOCR的命令行使用。但在日常使用过程中,命令行使用还是不太方便的,因此今天介绍一下如何使用WPF/C#构建TesseractOCR简单易用的用户界面。

普通用户使用

参照上一篇教程,在本地安装好TesseractOCR之后,在GitHub的Release页面进行下载。

GitHub地址:github.com/Ming-jiayou...

推荐选择依赖框架的压缩包,体积比较小:

解压如下所示:

双击打开即可使用,如果显示你没有安装框架,点击链接,下载安装一下框架,即可打开使用。

识别中文:

识别英文:

使用非常简单方便。

WPF/C#程序员使用

经过简单的调研,发现构建TesseractOCR-GUI主要可以通过两种方式。一种就是对命令行的使用进行封装,另一种就是对TesseractOCR的C++ API进行封装。

对命令行的使用进行封装比较简单,而且目前暂时也满足了我的使用需求,因此目前只实现了这种方式,pytesseract好像也是使用的这种方式。第二种调用Tesseract C++ API的方式,可能得等第一种对命令行的使用进行封装无法满足需求的时候,才会去探索了。

项目结构:

开发工具:Visual Studio 2022

.NET版本:.NET 8

使用的包:Prism + WPF UI

核心代码:

arduino 复制代码
  private void ExecuteOCRCommand()
  {
      string command;
      switch(SelectedLanguage)
      {
          case "中文":
              command = $"tesseract {SelectedFilePath} stdout -l chi_sim quiet";
              break;
          case "英文":
              command = $"tesseract {SelectedFilePath} stdout -l eng quiet";
              break;
          default:
              command = $"tesseract {SelectedFilePath} stdout -l chi_sim quiet";
              break;
      }  
​
      // 创建一个新的 ProcessStartInfo 对象
      ProcessStartInfo processStartInfo = new ProcessStartInfo
      {
          FileName = "cmd.exe", // 使用 cmd.exe 作为命令解释器
          Arguments = $"/c {command}", // 传递命令作为参数,/c 表示执行命令后退出
          RedirectStandardOutput = true, // 重定向标准输出
          RedirectStandardError = true, // 重定向标准错误
          UseShellExecute = false, // 不使用 Shell 执行
          CreateNoWindow = true, // 不创建新窗口
          StandardOutputEncoding = Encoding.GetEncoding("UTF-8"), // 设置标准输出的编码
          StandardErrorEncoding = Encoding.GetEncoding("UTF-8") // 设置标准错误的编码
      };
​
      // 创建一个新的 Process 对象
      Process process = new Process
      {
          StartInfo = processStartInfo
      };
​
      // 启动进程
      process.Start();
​
      // 读取输出
      OCRText = process.StandardOutput.ReadToEnd();
​
      // 读取错误(如果有)
      string error = process.StandardError.ReadToEnd();
​
      // 等待进程退出
      process.WaitForExit();
  }

最后

本项目可以帮助人们更简单方便地使用TesseractOCR,对WPF/C#新手程序员,也可以当作一个简单的练手小项目。

如果对你有所帮助,点颗star,就是最大的支持!!

相关推荐
阿蒙Amon几秒前
06. C#入门系列【自定义类型】:从青铜到王者的进阶之路
开发语言·c#
钢铁男儿3 小时前
C# 表达式和运算符(表达式和字面量)
开发语言·c#
林鸿群4 小时前
C#子线程更新主线程UI及委托回调使用示例
开发语言·c#
o0向阳而生0o4 小时前
63、.NET 异常处理
c#·.net·异常处理
SteveDraw7 小时前
C++动态链接库封装,供C#/C++ 等编程语言使用——C++动态链接库概述(总)
开发语言·c++·c#·封装·动态链接库
Kookoos7 小时前
性能剖析:在 ABP 框架中集成 MiniProfiler 实现性能可视化诊断
后端·c#·.net·abp vnext·miniprofiler
阿翰9 小时前
自动 GitHub Readme 20 种语言翻译平台 - OpenAiTx 开源免费
c#·.net
枫叶kx13 小时前
1Panel运行的.net程序无法读取系统字体(因为使用了docker)
c#
军训猫猫头18 小时前
96.如何使用C#实现串口发送? C#例子
开发语言·c#
不爱写代码的玉子20 小时前
HALCON透视矩阵
人工智能·深度学习·线性代数·算法·计算机视觉·矩阵·c#