using PaddleOCRSharp;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace PaddleOCRSharp_识别
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
string[] imgpaths;
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "*.*|*.bmp;*.jpg;*.jpeg;*.tiff;*.tiff;*.png";
ofd.Multiselect = true;
ofd.ShowDialog();
imgpaths = ofd.FileNames;
listBox1.Items.AddRange(imgpaths);
}
OCRModelConfig config = null;
//使用默认参数
OCRParameter oCRParameter = new OCRParameter();
private void button2_Click(object sender, EventArgs e)
{
//识别结果对象
OCRResult ocrResult = new OCRResult();
//建议程序全局初始化一次即可,不必每次识别都初始化,容易报错。
PaddleOCREngine engine = new PaddleOCREngine(config, oCRParameter);
//不能用foreach循环,因为foreach操作items改变了listbox,导致不能索引选中
for (int i = 0; i < listBox1.Items.Count; i++)
{
ocrResult = engine.DetectText(listBox1.Items[i].ToString());
if (ocrResult != null)
{
listBox1.SetSelected(i, true);
textBox1.Text += ocrResult.Text + "\r\n" + "\t";
}
}
}
private void button3_Click(object sender, EventArgs e)
{
this.textBox1.SelectAll();
Clipboard.SetDataObject(this.textBox1.Text);
MessageBox.Show("复制成功!");
}
//拖拽实现:拖入enter+拖入drop ,2个不能少
private void listBox1_DragEnter(object sender, DragEventArgs e)
{
//拖放文件,判断是取文本内容还是文件的link链接
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
//如果是文件取链接
e.Effect = DragDropEffects.Link;
}
else
{
//是文本取内容
if (e.Data.GetDataPresent(DataFormats.Text))
{
e.Effect = DragDropEffects.Copy; //有copy move link等
}
}
}
string[] a;
private void listBox1_DragDrop(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
//将获得的链接object强转为string[],加入listbox
a = ((string[])(e.Data.GetData(DataFormats.FileDrop)));
listBox1.Items.AddRange(a);
}
else
{
//是文本取内容
if (e.Data.GetDataPresent(DataFormats.Text))
{
textBox1.Text = e.Data.GetData(DataFormats.Text).ToString();
}
}
}
private void button4_Click(object sender, EventArgs e)
{
listBox1.Items.Clear();
}
}
}