ocr-tesseract/Form1.cs
Ray be4f973a9f Added sample images
Added ClearImage for barcode reading
2024-08-05 15:24:13 +01:00

198 lines
7.1 KiB
C#

using System.Diagnostics;
using System.Windows.Forms;
using Inlite.ClearImageNet;
using Tesseract;
namespace WinFormsApp3
{
public partial class Form1 : Form
{
private readonly string _basePath;
private readonly string _tessDataPath;
public Form1()
{
InitializeComponent();
_basePath = Path.GetFullPath(Path.GetDirectoryName(Application.ExecutablePath) + "\\..\\..\\..\\");
_tessDataPath = Path.Combine(_basePath, "#research", "tessdata");
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
richTextBox1.Clear();
}
private void button1_Click(object sender, EventArgs e)
{
var testImagePath = Path.Combine(_basePath, "#research", "Passport Demand Study Sample Letter.jpg");
richTextBox1.Text += ParseOCR(testImagePath);
richTextBox1.Text += Environment.NewLine;
}
private void button2_Click(object sender, EventArgs e)
{
var testImagePath = Path.Combine(_basePath, "#research", "Passport Demand Study Sample Letter.jpg");
var barcodes = ReadBarcode(testImagePath);
foreach (var barcode in barcodes)
{
richTextBox1.Text += $"Barcode Type = {barcode.Type} | Value = {barcode.Text} | Page = {barcode.Page}";
richTextBox1.Text += Environment.NewLine;
}
}
private void button3_Click(object sender, EventArgs e)
{
var testImagePath = Path.Combine(_basePath, "#research", "Passport Demand Study Sample Letter.jpg");
richTextBox1.Text += Environment.NewLine;
}
////var basePath = Path.GetFullPath(Path.GetDirectoryName(Application.ExecutablePath) + "\\..\\..\\..\\");
////var tt2 = File.Exists(testImagePath);
//try
//{
// using (var engine = new TesseractEngine(_tessDataPath, "eng", EngineMode.Default))
// {
// using (var img = Pix.LoadFromFile(testImagePath))
// {
// using (var page = engine.Process(img))
// {
// Console.WriteLine("Mean Confidence = {0}", page.GetMeanConfidence());
// //var tt1 = page.GetLSTMBoxText(0);
// //var tt1 = page.GetAltoText(0);
// //var tt1 = page.GetBoxText(0);
// //var tt1 = page.GetHOCRText(0);
// //var tt1 = page.GetMeanConfidence();
// var tt1 = page.GetText();
// //var tt1 = page.GetUNLVText();
// //Console.WriteLine("Text (GetText): \r\n{0}", text);
// //Console.WriteLine("Text (iterator):");
// //using (var iter = page.GetIterator())
// //{
// // iter.Begin();
// // do
// // {
// // do
// // {
// // do
// // {
// // do
// // {
// // if (iter.IsAtBeginningOf(PageIteratorLevel.Block))
// // {
// // Console.WriteLine("<BLOCK>");
// // }
// // Console.Write(iter.GetText(PageIteratorLevel.Word));
// // Console.Write(" ");
// // if (iter.IsAtFinalOf(PageIteratorLevel.TextLine, PageIteratorLevel.Word))
// // {
// // Console.WriteLine();
// // }
// // } while (iter.Next(PageIteratorLevel.TextLine, PageIteratorLevel.Word));
// // if (iter.IsAtFinalOf(PageIteratorLevel.Para, PageIteratorLevel.TextLine))
// // {
// // Console.WriteLine();
// // }
// // } while (iter.Next(PageIteratorLevel.Para, PageIteratorLevel.TextLine));
// // } while (iter.Next(PageIteratorLevel.Block, PageIteratorLevel.Para));
// // } while (iter.Next(PageIteratorLevel.Block));
// //}
// }
// }
// }
//}
//catch (Exception exc)
//{
// //Trace.TraceError(exc.ToString());
// Console.WriteLine("Unexpected Error: " + exc.Message);
// //Console.WriteLine("Details: ");
// //Console.WriteLine(exc.ToString());
//}
//}
private string ParseOCR(string filename)
{
string response = null;
try
{
using (var engine = new TesseractEngine(_tessDataPath, "eng", EngineMode.Default))
{
using (var img = Pix.LoadFromFile(filename))
{
using (var page = engine.Process(img))
{
Debug.WriteLine("Mean Confidence = {0}", page.GetMeanConfidence());
//var tt2 = page.GetAltoText(0);
//var tt3 = page.GetBoxText(0);
//var tt4 = page.GetHOCRText(0);
//var tt1 = page.GetLSTMBoxText(0);
//var tt5 = page.GetMeanConfidence();
//var tt7 = page.GetTsvText(0);
//var tt6 = page.GetUNLVText();
response = page.GetText();
}
}
}
}
catch (Exception exc)
{
// error
}
return response;
}
private Barcode[] ReadBarcode(string filename)
{
var result = new Barcode[0];
try
{
using (BarcodeReader reader = new BarcodeReader())
{
reader.Code39 = true;
reader.Code128 = true;
reader.Upca = true;
reader.Upce = true;
reader.QR = true;
result = reader.Read(filename, 0);
//foreach (var barcode in result)
//{
// Debug.WriteLine($"Barcode type: {barcode.Type} Barcode page: {barcode.Page} Text: {barcode.Text}");
//}
}
}
catch (Exception exc)
{
Debug.WriteLine(exc.Message);
}
return result;
}
}
}