#author("2024-07-10T12:15:31+08:00","default:Admin","Admin")
#author("2024-07-10T12:34:40+08:00","default:Admin","Admin")
[[Deep Learning]]

&color(red){※前提条件:本情報はUbentu15.04を基づいて説明してる};

* 概要 [#f9f5eff9]

PaddleOCRSharp 是一个基于百度飞桨PaddleOCR的开源代码编写的.NET版本OCR工具类库。项目核心组件PaddleOCR.dll,由C++编写,需要用到OpenCV。

Github的项目地址

 https://github.com/paddlepaddle/PaddleOCR

Gitee地址
 https://gitee.com/raoyutian/PaddleOCRSharp

* 应用场景 [#t55488fe]

PaddleOCRSharp适用于各种需要OCR技术的.NET开发场景,如文档数字化处理、自动识别表单数据、车牌识别等。无论是企业级应用还是个人开发者,PaddleOCRSharp都能提供强大的OCR支持。

* 模型 [#mfb97705]

可以在下面的网址下载到很多官方的模型

 https://gitee.com/paddlepaddle/PaddleOCR/blob/dygraph/doc/doc_ch/models_list.md

* 注意事项 [#qf6271e0]

- &color(red){本项目只能在X64的CPU上编译和使用,只能在avx指令集上的CPU上使用。};
-- Visual studio 的“目标平台”改为“x64”
- &color(red){PaddleOCR初次使用时会自动下载模型路径到C:\Users下用户路径,若使用者用户名为中文,将导致实例化失败(不支持中文路径)};
- &color(red){本项目依赖VC++2017X64运行库,请检查机器上是否安装VC++依赖库。2.0.4及以上版本,免安装VC++2017X64运行库};
-- 下载地址1:https://go.microsoft.com/fwlink/?LinkId=746572
-- 下载地址2:https://aka.ms/vs/17/release/vc_redist.x64.exe
-- 运行库各版本:https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170

DirectPlay

重新注册dll
 for %i in (%windir%\syswow64\*.dll) do regsvr32.exe /s %i

本项目目前支持以下.NET框架:
#codeprettify{{
net35;net40;net45;net451;net452;net46;net461;net462;net47;net471;net472;net48;net481;
netstandard2.0;netcoreapp3.1;
net5.0;net6.0;net7.0;net8.0
}}

* 功能 [#hf88933e]

** 使用QRCoder生成二维码 [#i4eda1f6]
#codeprettify{{
public static Bitmap GetQRCodeImage(string qrCode)
{
    //获取含水印的二维码图像对象
    QRCodeGenerator generator = new QRCodeGenerator();
    QRCodeData data = generator.CreateQrCode(qrCode, QRCodeGenerator.ECCLevel.M);    //qrCode是二维码内容,ECCLevel用于设置容错率
    QRCode code = new QRCode(data);
    //Bitmap icon = new Bitmap("水印文件路径");
    //定义二维码中央水印图标,文件路径一定要是绝对路径,如果是Web工程,可用Server.MapPath函数获取绝对路径
    //icon:由于这里没水印图片,所以用null
    Bitmap qrImage = code.GetGraphic(10, Color.Black, Color.White,null, 15, 6, true);
    //获得含水印的二维码图像信息,如不需要水印可以调用另外函数:Bitmap qrImage = code.GetGraphic(10);
    return qrImage;
}
}}

*Troubleshooting [#s3368140]

** System.DIINotFoundException: 无法动载DLL PaddleOCR.dll找不到指定的模块。 [#kffd70e4]

需要将下面这些dll(文件在开源作者PaddleOCRSharp\PaddleOCRLib文件夹里面)复制到debug文件夹中:
#codeprettify{{
libiomp5md.dll
mkldnn.dll
mklml.dll
opencv_world470.dll
paddle_inference.dll
PaddleOCR.dll
}}

使用过程中遇到提示下面的错误

#codeprettify{{
Unable to load DLL 'PaddleOCR.dll' or one of its dependencies: 动态链接库(DLL)初始化例程失败。 (0x8007045A)
   at PaddleOCRSharp.PaddleOCREngine.Initialize(String det_infer, String cls_infer, String rec_infer, String keys, OCRParameter parameter)
   at PaddleOCRSharp.PaddleOCREngine..ctor(OCRModelConfig config, OCRParameter parameter)
   at TestApp.Form1.buttonInit_Click(Object sender, EventArgs e) in D:\WebBrower\TestApp\Form1.cs:line 82
}}


开发使用的windows Pro版系统可以运行,但是复制程序到其他下面两个系统里面提示上面的错误信息。
- windows Home版
- windows Pro版

尝试过以下的方法,但是无论如何都提示上面的错误信息。
- 开发电脑有独立显卡,更改Paddle的设置使用CPU,但后来发现Paddle默认就是CPU
- 怀疑360杀毒软件的问题。但是退出、卸载后,问题依然存在
- 用DependencyWalker等工具查找、并复制缺少的dll等方式
-- 对比两个系统DependencyWalker读入DLL后的差异一样,也有问题,
-- 从正常系统复制DLL到问题系统后,再用regsvr32 /s命令注册dll问题依然

开发的电脑和其他两台的区别
- Kernel32.dll的版本不同外,其他都一样
- 硬件安装了独立显卡
- 没有安装360
- 开发电脑安装的VS2022Preview版,HOME版安装VS2022版,PRO版没有安装VS

然后担心系统发布后也不好用,于是安装了下面的系统尝试,结果什么也没有安装,一把成功

#codeprettify{{
Windows Server 2022 Datacenter
版本号 21H2
操作系统内部版本 20348.169
}}
这个服务器系统里面,默认安装了,下面的2015-2022版本一个
- Microsoft Visual C++ 2015-2022 Redistributable(x64)
- Microsoft Visual C++ 2015-2022 Redistributable(x86)
** Windows Server系统 PaddleOCR失败解决方案 [#heba0e6e]

使用如下步骤安装windows media player:

+ 打开“服务器管理器”,点击【添加角色和功能】,然后下一步,直到【功能】界面;
+ 勾选【媒体基础】、【墨迹和手写服务】,【用户界面和基础结构】下的【桌面体验】
+ 单击【安装】按钮;等安装完毕后,根据提示重新启动计算机即可。

&ref(paddleocr_1.jpg);

#hr();
コメント:
#comment_kcaptcha

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS