打开VSIDE,新建Windows窗体应用(.NETFramework)类型的项目,选择一个.NET框架,如.NETFramework 4.0,右键点击项目,选择属性》生成,目标平台设置成X64.
安装nuget包
搜索PaddleOCRSharp 安装最新版本
代码
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter ="*.*|*.bmp;*.jpg;*.jpeg;*.tiff;*.tiff;*.png";
if (ofd.ShowDialog() != true) return;
var imagebyte =File.ReadAllBytes(ofd.FileName);
Bitmap bitmap = newBitmap(new MemoryStream(imagebyte));
OCRModelConfig config =null;
OCRParameter oCRParameter = new OCRParameter ();
OCRResult ocrResult =new OCRResult();
using (PaddleOCREngine engine = new PaddleOCREngine(config, oCRParameter))
{
ocrResult =engine.DetectText(bitmap );
}
if (ocrResult != null)
{
MessageBox.Show(ocrResult.Text,"识别结果");
}
winform
using PaddleOCRSharp;
using Spire.OCR;
namespace WinFormsApp
{
public partial class Form1 : Form
{
public PaddleOCREngine engine;
public Form1()
{
InitializeComponent();
engine = CreateOCRParameter();// 这个只能引用一次,否则会出现内存一直增加的问题
}
#region SpireOCR
private void SpireOCR_Click(object sender, EventArgs e)
{
textBox1.Text = "";
this.openFileDialog1.FileName = "";
this.openFileDialog1.Filter = "所有文件(*.*)|*.*";
if (this.openFileDialog1.ShowDialog() == DialogResult.OK)
{
OcrScanner scanner = new OcrScanner();
scanner.Scan(this.openFileDialog1.FileName);
scanner.Dispose();
textBox1.Text = "SpireOCR识别结果:\r\n" + scanner.Text.ToString().Split("Evaluation")[0];
}
}
#endregion
#region PaddleOCRSharp
public PaddleOCREngine CreateOCRParameter()
{
OCRParameter oCRParameter = new OCRParameter();
oCRParameter.numThread = 6;//预测并发线程数
oCRParameter.Enable_mkldnn = 1;//web部署该值建议设置为0,否则出错,内存如果使用很大,建议该值也设置为0.
oCRParameter.cls = 1; //是否执行文字方向分类;默认false
oCRParameter.det = 1;//是否开启方向检测,用于检测识别180旋转
oCRParameter.use_angle_cls = 1;//是否开启方向检测,用于检测识别180旋转
oCRParameter.det_db_score_mode = 1;//是否使用多段线,即文字区域是用多段线还是用矩形,
oCRParameter.UnClipRatio = 8.6f;
oCRParameter.MaxSideLen = 960;
OCRModelConfig config = null;
PaddleOCREngine engine = new PaddleOCREngine(config, oCRParameter);
return engine;
}
private void PaddleOCRSharp_Click(object sender, EventArgs e)
{
textBox1.Text = "";
this.openFileDialog1.FileName = "";
this.openFileDialog1.Filter = "所有文件(*.*)|*.*";
if (this.openFileDialog1.ShowDialog() == DialogResult.OK)
{
OCRResult ocrResult = engine.DetectText(this.openFileDialog1.FileName);
textBox1.Text = "PaddleOCRSharp识别结果:\r\n" + ocrResult.Text;
}
}
#endregion
}
}