TesseractOCR-GUI:基于WPF/C#构建TesseractOCR简单易用的用户界面
前言
前篇文章使用Tesseract进行图片文字识别介绍了如何安装TesseractOCR与TesseractOCR的命令行使用。但在日常使用过程中,命令行使用还是不太方便的,因此今天介绍一下如何使用WPF/C#构建TesseractOCR简单易用的用户界面。
普通用户使用
参照上一篇教程,在本地安装好TesseractOCR之后,在GitHub的Release页面进行下载。
GitHub地址:https://github.com/Ming-jiayou/TesseractOCR-GUI

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

解压如下所示:

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

识别英文:

使用非常简单方便。
WPF/C#程序员使用
经过简单的调研,发现构建TesseractOCR-GUI主要可以通过两种方式。一种就是对命令行的使用进行封装,另一种就是对TesseractOCR的C++ API进行封装。
对命令行的使用进行封装比较简单,而且目前暂时也满足了我的使用需求,因此目前只实现了这种方式,pytesseract好像也是使用的这种方式。第二种调用Tesseract C++ API的方式,可能得等第一种对命令行的使用进行封装无法满足需求的时候,才会去探索了。
项目结构:

开发工具: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,就是最大的支持!!
还有任何问题,欢迎通过微信公众号与我联系:

TesseractOCR-GUI:基于WPF/C#构建TesseractOCR简单易用的用户界面的更多相关文章
- Android 基于Retrofit+Rxjava搭建的简单易用的网络架构
装逼開始之前,为大家推荐两篇文章,用来更好的学习Retrofit和Rxjava. 在这里我们要感谢互联网装逼行业勇于献身,甘于奉献的的大婶们. 我仅代表个人,给您们跪舔了. Retrofit:Retr ...
- struts1:(Struts重构)构建一个简单的基于MVC模式的JavaWeb
在构建一个简单的基于MVC模式的JavaWeb 中,我们使用了JSP+Servlet+JavaBean构建了一个基于MVC模式的简单登录系统,但在其小结中已经指出,这种模式下的Controller 和 ...
- 构建一个简单的基于MVC模式的JavaWeb
零晨三点半了,刚刚几个兄弟一起出去吼歌,才回来,这应该是我大学第二次去K歌,第一次是大一吧,之后每次兄弟喊我,我都不想去,因为我还是很害怕去KTV,或许是因为那里是我伤心的地方,也或许是因为我在那里失 ...
- 基于WPF的酷炫GUI窗口的实现全过程
title: 基于WPF的酷炫GUI窗口的实现全过程 date: 2020-08-14 permalink: /build/wpfgui sidebarDepth: 2 tags: wpf gui 软 ...
- 基于laravel框架构建最小内容管理系统
校园失物招领平台开发 --基于laravel框架构建最小内容管理系统 摘要 针对目前大学校园人口密度大.人群活动频繁.师生学习生活等物品容易遗失的基本现状,在分析传统失物招领过程中的工作效率低下. ...
- 基于Dubbo框架构建分布式服务(一)
Dubbo是Alibaba开源的分布式服务框架,我们可以非常容易地通过Dubbo来构建分布式服务,并根据自己实际业务应用场景来选择合适的集群容错模式,这个对于很多应用都是迫切希望的,只需要通过简单的配 ...
- Python黑帽编程1.2 基于VS Code构建Python开发环境
Python黑帽编程1.2 基于VS Code构建Python开发环境 0.1 本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks Atta ...
- 基于Dubbo框架构建分布式服务
Dubbo是Alibaba开源的分布式服务框架,我们可以非常容易地通过Dubbo来构建分布式服务,并根据自己实际业务应用场景来选择合适的集群容错模式,这个对于很多应用都是迫切希望的,只需要通过简单的配 ...
- 基于 Apache Mahout 构建社会化推荐引擎
基于 Apache Mahout 构建社会化推荐引擎 http://www.ibm.com/developerworks/cn/views/java/libraryview.jsp 推荐引擎利用特殊的 ...
- 【Android Developers Training】 3. 构建一个简单UI
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
随机推荐
- 多表查询 —— 内连接&外连接&子查询
连接查询 内连接 1.查询语法 -- 隐式内连接 select 字段列表 from 表1, 表2... where 条件; -- 显式内连接 select 字段列表 from 表1 [INNER] j ...
- Codeforces Round 973 (Div. 2) C
#include <bits/stdc++.h> using namespace std; int T; int n; struct edge { int pre; int nxt; in ...
- Dockerfile定制镜像(FROM?RUN ?WORKDIR ?ADD & COPY指令)(七)
一.Dockerfile 镜像的定制实际上就是定制镜像的每一层所添加的配置.文件等信息,实际上当我们在一个容器中添加或者修改了一些文件后,我们可以通过docker commit命令来生成一个新的镜像, ...
- 自定义 AuthenticationProvider ,UserDetailsService的实现类@Autowired 为null
项目场景: 整合spring security OAuth2自定义AuthenticationProvider 登录认证 签发token 问题描述: 在自定义 AuthenticationProvid ...
- OpenAI官方开源多智能体框架「Swarm」,并不是我想要的多智能体框架
今天早上,OpenAI实施团队的 @shyamal在Github上开源了Swarm这个OpenAI官方的多智能体框架.不得不说,OpenAI官方下场,获得的社区影响就是不一样,在微信群.朋友圈里已经出 ...
- python 生成requirements 文件
python 要生成 requirements文件 有两种情况 具有独立的虚拟环境 全局环境 具有独立的虚拟环境 pip freeze > requirements.txt 全局环境 安装 pi ...
- 鸿蒙NEXT开发声明式UI是咋回事?
大家好,我是 V 哥,ArkTS 是 HarmonyOS 优选的主力应用开发语言,它在 TypeScript 的基础上进行了扩展,提供了声明式 UI 描述.自定义组件和动态扩展 UI 元素的能力.这些 ...
- docker对的tomcat、mysql、redis、nginx的安装
本章篇章主要讲解了docker对常用软件的安装说明 总体步骤:搜索镜像.拉取镜像.查看镜像.启动镜像.停止容器.移除容器 tomcat docker seacher tomcat//也可以在docke ...
- KubeSphere 社区双周报|2024.06.07-06.20
KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书.新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列 ...
- FluxCD 多集群应用的设计与实现
前言 FluxCD 是 CNCF 的孵化项目,可以让我们以 GitOps 的方式轻松地交付应用.和另一个同类的 CNCF 孵化项目 ArgoCD 不同,FluxCD 是许多 toolkit 的集合,天 ...