首页 > 编程语言 >TesseractOCR-GUI:基于WPF/C#构建TesseractOCR简单易用的用户界面

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

时间:2024-12-07 14:43:30浏览次数:4  
标签:TesseractOCR C# GUI process command 使用 WPF

前言

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

普通用户使用

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

GitHub地址:https://github.com/Ming-jiayou/TesseractOCR-GUI

image-20241207134914277

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

image-20241207135004215

解压如下所示:

image-20241207135159013

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

识别中文:

image-20241207135447692

识别英文:

image-20241207135519142

使用非常简单方便。

WPF/C#程序员使用

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

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

项目结构:

image-20241207140458038

开发工具:Visual Studio 2022

.NET版本:.NET 8

使用的包:Prism + WPF UI

核心代码:

  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,就是最大的支持!!

还有任何问题,欢迎通过微信公众号与我联系:

qrcode_for_gh_eb0908859e11_344

标签:TesseractOCR,C#,GUI,process,command,使用,WPF
From: https://www.cnblogs.com/mingupupu/p/18592170

相关文章

  • jdbc(3)
    1.抽象一个dao的父类。根据我们之前操作数据库表时,封装了很多的dao类,这些dao类他们具有很多相同的代码。如果我们反复写这些重复的代码相对比较麻烦。我们学过继承,是否可以把这些dao类的公共代码抽取到父类中,然后子类继承该父类。publicclassBaseDao{protectedPre......
  • jdbc(1)
    1.jdbc的概述JDBC(JavaDataBaseConnectivity)称为Java数据库连接,它是一种用于数据库访问的应用程序API接口,由一组用Java语言编写的类和接口组成,有了JDBC就可以用统一的语法对多种关系数据库进行访问,而不用担心其数据库操作语言的差异。有了JDBC,就不必为访问Mysql数据库专门......
  • CF2045H - Missing Separators 题解
    CF2045H-MissingSeparators题面您有一本字典,它是按字母顺序排列的多个单词的列表。每个单词都由大写英文字母组成。您想打印这本字典。然而,打印系统出现了一个错误,列表中的所有单词都紧挨着打印,单词之间没有任何分隔符。现在,您最终得到的字符串\(S\)是字典中所有单词按照......
  • TCP/IP协议详解(小白)
    TCP/IP协议详解TCP/IP协议包含了一系列的协议,也叫TCP/IP协议族(TCP/IPProtocolSuite,或TCP/IPProtocols),简称TCP/IP。TCP/IP协议族提供了点对点的连结机制,并且将传输数据帧的封装、寻址、传输、路由以及接收方式,都予以标准化。说明:本文会以pdf格式持续更新,更多最新尼恩3高pd......
  • 论文阅读——Probabilistic error cancellation with sparse Pauli-Lindblad models o
    创新点稀疏Pauli-Lindblad噪声模型:提出了一种新的稀疏Pauli-Lindblad噪声模型,用于捕获量子处理器上的相关噪声。该模型仅包含与量子处理器拓扑相关的低权重Pauli项(weight-one和weight-twoPauli项),从而减少了模型复杂度并提升了学习效率。可扩展的误差学习和消除协......
  • Codeforces Round 991 (Div. 3)
    复盘ing,b题由于细节wa许久,a题又是熟悉的逻辑错误,c题倒是相对轻松地ac了,d题两小时甚至来不及看......复盘后觉得d题有可做空间,随缘更新吧......
  • 蓝桥杯 2024 省赛 C++ B组 R 格式 (JAVA面向对象 高精度 纯api题解)
    解题思路:由于数位较大这里采用高精度,又因为高精度写起来比较麻烦所以这里直接采用JAVAapi中的高精度浮点数类型和高精度整数类型,应为高精度浮点数类型四舍五入较为麻烦所以这里改为手动四舍五入importjava.math.BigDecimal;importjava.math.BigInteger;importjava.util......
  • 详细介绍 NVIDIA GeForce RTX 系列,各显卡配置参数(长期更新 - 2024.12)
    NVIDIAGeForceRTX系列是NVIDIA面向消费级市场的高性能GPU产品线,注重提供高性能的图形处理能力和游戏特性。主要面向游戏玩家和普通用户,同时也被广泛用于深度学习推理和训练等计算密集型任务。主要GPU产品有:50Series、40Series、30Series、20Series、10Seri......
  • 开源低代码平台-Microi吾码-SaaS引擎
    Microi吾码-SaaS引擎平台简介SaaS引擎介绍OsClientOsClientTypeOsClientNetwork程序必须指定以上3个参数基础配置阿里云配置MinIO配置Redis配置MQ消息队列配置搜索引擎配置Microi吾码-系列文档接口引擎实战-系列文档平台简介技术框架:.NET8+Redis+MySql/SqlServe......
  • c++领域展开第二幕——入门基础(引用的概念和使用以及和指针的区别)超详细!!!!
    文章目录前言一、引用1.1引用的概念和定义1.2引用的特性1.3引用的使用1.4const引用1.5指针和引用的关系总结前言上一篇学习了c++入门的一些基础部分语法,今天还有基础中最重要的一部分——引用对的,没错,今天只有一个内容就是——引用。引用之后就正式开始类......