C# 读取image中的文字

using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using Tesseract;

namespace TesseractImageToText
{
    internal class Program
    {
        static void Main(string[] args)
        {
            string inputFilePath = @"C:\Users\admin\Downloads\images_org.tsv"; // 输入 TSV 文件路径
            string outputFilePath = @"C:\Users\admin\Downloads\images_result.tsv"; // 输出 TSV 文件路径

            // 打开输入文件进行读取
            using (StreamReader reader = new StreamReader(inputFilePath))
            {
                // 创建用于写入的输出文件
                using (StreamWriter writer = new StreamWriter(outputFilePath))
                {
                    // 读取输入文件内容直到文件结束
                    while (!reader.EndOfStream)
                    {
                        // 读取一行内容
                        string line = reader.ReadLine();

                        // 使用制表符 '\t' 分隔行内容成字段
                        string[] fields = line.Split('\t');

                        // 确保文件包含三列数据
                        if (fields.Length >= 3)
                        {
                            // 读取前三列数据
                            string column1 = fields[0];
                            string column2 = fields[1];
                            string column3 = fields[2];

                            // 添加新列数据(这里假设新列数据是每行的索引)
                            string newColumn = string.Empty;
                            if (column2.StartsWith("https"))
                            {
                                newColumn = GetTextFromImage(column2);
                            }
                            else
                            {
                                newColumn = "ResultText";
                            }

                            // 写入新的行数据到输出文件
                            writer.WriteLine($"{column1}\t{column2}\t{column3}\t{newColumn}");
                        }
                        else
                        {
                            // 如果行数据少于三列,直接写入原始行数据到输出文件
                            writer.WriteLine(line);
                        }
                    }
                }
            }

            Console.WriteLine("TSV 文件处理完成。");
        }

        static string GetTextFromImage(string imageUrl)
        {
            Bitmap bitmap;
            using (WebClient client = new WebClient())
            {
                using (var stream = client.OpenRead(imageUrl))
                {
                    bitmap = new Bitmap(stream);
                }
            }
            using (var engine = new TesseractEngine(@"C:\GitCode\tesseract\tessdata", "eng", EngineMode.Default))
            {
                using (var image = PixConverter.ToPix(bitmap))
                {
                    using (var page = engine.Process(image))
                    {
                        string extractedText = page.GetText();
                        return extractedText.Replace(" ","").Replace("\n", "").Replace("\t", "");
                    }
                }
            }
        }
    }
}

使用Tesseract组件,.net Framework下运行,需要下载训练好的数据放到tessdata目录下,我这里只有eng和简体中文。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值