CSharp 如何OCR离线识别文本

2023-11-05 20:48
文章标签 文本 识别 ocr 离线 csharp

本文主要是介绍CSharp 如何OCR离线识别文本,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

WPF开发者QQ群: 340500857  | 微信群 -> 进入公众号主页 加入组织

      由于微信群人数太多入群请添加小编微信号

(yanjinhuawechat)或(W_Feng_aiQ)入群

(需备注WPF开发者

本项目是基于开源项目PaddleOCR的C++代码修改并封装的.NET库,包含文本OCR功能。同时也提供了C++的调用示例代码,可以供C++开发者使用。

PaddleOCR.dll文件是基于开源项目PaddleOCR的C++代码修改的C++动态库,基于opencv的x64编译而成的。

为了降低部署文件大小,PaddleOCR.dll使用了openblas依赖编译,paddle_inference.dll是官方提供的openblas模式下的库。

模型库支持轻量版(本项目)、服务器版模型库(更准确),可以自行更改模型库适用实际需求。

PS:有更好的方式欢迎推荐。

01

使用方式

文件夹结构

Cpp //PaddleOCR.dll的头文件和库文件,方便C++调用PaddleOCR.dll

一、C++代码如下。

be0b18e9a2034a71b316b7bac28ca19e.png

#include <iostream>
#include <Windows.h>
#include "include/PaddleOCR.h"
#include "include/OCRResult.h"
#include <tchar.h>
#include "string"
#pragma comment (lib,"PaddleOCR.lib")
using namespace std;
int main()
{LpOCRResult lpocrreult;modeldata md;OCRParameter parameter;char path[MAX_PATH];GetCurrentDirectoryA(MAX_PATH, path);string cls_infer(path);cls_infer += "\\inference\\ch_ppocr_mobile_v2.0_cls_infer";string rec_infer(path);rec_infer += "\\inference\\ch_PP-OCRv2_rec_infer";string det_infer(path);det_infer += "\\inference\\ch_PP-OCRv2_det_infer";string ocrkeys(path);ocrkeys += "\\inference\\ppocr_keys.txt";string imagefile(path);imagefile += "\\test.png";md.cls_infer = const_cast<char*>(cls_infer.c_str());md.rec_infer = const_cast<char*>(rec_infer.c_str());md.det_infer = const_cast<char*>(det_infer.c_str());md.keys = const_cast<char*>(ocrkeys.c_str());md.imagefile = const_cast<char*>(imagefile.c_str());int  cout =Detect(md.det_infer, md.cls_infer, md.rec_infer, md.keys, md.imagefile, parameter, &lpocrreult);for (size_t i = 0; i < cout; i++){wstring ss =(WCHAR*)(lpocrreult->pOCRText[i].ptext);std::wcout <<ss;}FreeDetectMem(lpocrreult);
}

二、添加引用PaddleOCRSharp.dll System.Drawing.dll 

运行需要用的库文件目录如下。

519acb00cfba554c7b89b5498ccfb97d.png

PaddleOCRLib  //OCR运行需要的文件
|--inference     //OCR的模型库文件夹
|--openblas.dll   //第三方引用库
|--paddle_inference.dll   //飞桨库
|--PaddleOCR.dll   //基于开源项目PaddleOCR修改的C++动态库
PaddleOCRSharp  //.NET封装库

2201a2b0fb885255768bcf6f012d9180.png

c731ebabb5bd7c9ab7406657b1379347.png

二、新建 MainWindow.xaml 代码点击按钮调用OCR识别如下

1231429c4d33d2bdb7e79ca662829590.png

using PaddleOCRSharp;
private void button1_Click(object sender, EventArgs e){OpenFileDialog ofd = new OpenFileDialog();ofd.Filter = "*.*|*.bmp;*.jpg;*.jpeg;*.tiff;*.tiff;*.png";if (ofd.ShowDialog() != DialogResult.OK) return;var imagebyte = File.ReadAllBytes(ofd.FileName);Bitmap bitmap = new Bitmap(new MemoryStream(imagebyte));OCRResult ocrResult = PaddleOCRSharp.PaddleOCRHelper.DetectText(bitmap);if (ocrResult != null){MessageBox.Show(ocrResult.Text,"识别结果");}}

02


效果预览

鸣谢素材提供者 - 饶玉田

源码地址如下

gitee:https://gitee.com/raoyutian/paddle-ocrsharp

WPF开发者QQ群: 340500857 

971a6a7afdf88f84dc448095fc7fc9ca.png

扫一扫关注我们,

785ded983b3ff5f5d2757737f27d5604.gif

更多知识早知道!

36520823620152e6a5608dca7d5cee49.gif

点击阅读原文可跳转至源代码

这篇关于CSharp 如何OCR离线识别文本的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/352400

相关文章

Python中图片与PDF识别文本(OCR)的全面指南

《Python中图片与PDF识别文本(OCR)的全面指南》在数据爆炸时代,80%的企业数据以非结构化形式存在,其中PDF和图像是最主要的载体,本文将深入探索Python中OCR技术如何将这些数字纸张转... 目录一、OCR技术核心原理二、python图像识别四大工具库1. Pytesseract - 经典O

苹果macOS 26 Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色

《苹果macOS26Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色》在整体系统设计方面,macOS26采用了全新的玻璃质感视觉风格,应用于Dock栏、应用图标以及桌面小部件等多个界面... 科技媒体 MACRumors 昨日(6 月 13 日)发布博文,报道称在 macOS 26 Tahoe 中

Python实现精准提取 PDF中的文本,表格与图片

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实... 目录安装 python 库提取 PDF 文本内容:获取整页文本与指定区域内容获取页面上的所有文本内容获取

Python基于微信OCR引擎实现高效图片文字识别

《Python基于微信OCR引擎实现高效图片文字识别》这篇文章主要为大家详细介绍了一款基于微信OCR引擎的图片文字识别桌面应用开发全过程,可以实现从图片拖拽识别到文字提取,感兴趣的小伙伴可以跟随小编一... 目录一、项目概述1.1 开发背景1.2 技术选型1.3 核心优势二、功能详解2.1 核心功能模块2.

Python验证码识别方式(使用pytesseract库)

《Python验证码识别方式(使用pytesseract库)》:本文主要介绍Python验证码识别方式(使用pytesseract库),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录1、安装Tesseract-OCR2、在python中使用3、本地图片识别4、结合playwrigh

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

使用Python和PaddleOCR实现图文识别的代码和步骤

《使用Python和PaddleOCR实现图文识别的代码和步骤》在当今数字化时代,图文识别技术的应用越来越广泛,如文档数字化、信息提取等,PaddleOCR是百度开源的一款强大的OCR工具包,它集成了... 目录一、引言二、环境准备2.1 安装 python2.2 安装 PaddlePaddle2.3 安装

C#TextBox设置提示文本方式(SetHintText)

《C#TextBox设置提示文本方式(SetHintText)》:本文主要介绍C#TextBox设置提示文本方式(SetHintText),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录C#TextBox设置提示文本效果展示核心代码总结C#TextBox设置提示文本效果展示核心代

使用Python实现文本转语音(TTS)并播放音频

《使用Python实现文本转语音(TTS)并播放音频》在开发涉及语音交互或需要语音提示的应用时,文本转语音(TTS)技术是一个非常实用的工具,下面我们来看看如何使用gTTS和playsound库将文本... 目录什么是 gTTS 和 playsound安装依赖库实现步骤 1. 导入库2. 定义文本和语言 3

使用PyTorch实现手写数字识别功能

《使用PyTorch实现手写数字识别功能》在人工智能的世界里,计算机视觉是最具魅力的领域之一,通过PyTorch这一强大的深度学习框架,我们将在经典的MNIST数据集上,见证一个神经网络从零开始学会识... 目录当计算机学会“看”数字搭建开发环境MNIST数据集解析1. 认识手写数字数据库2. 数据预处理的