[C#]调用tesseact-ocr的traineddata模型进行ocr文字识别

这篇具有很好参考价值的文章主要介绍了[C#]调用tesseact-ocr的traineddata模型进行ocr文字识别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【框架地址】

https://github.com/charlesw/tesseract
【算法介绍】

Tesseract OCR是一个开源的光学字符识别引擎,它可以将图像中的文字转换成可编辑和可搜索的文本格式。Tesseract由惠普实验室于1985年开始开发,并在2005年被Google收购后成为了开源项目。自那时起,它一直在不断的更新和改进,成为了世界上最流行的OCR引擎之一。

核心技术

Tesseract利用了机器学习的方法,特别是在其后期版本中引入了基于长短时记忆(LSTM)网络的深度学习模型,这显著提高了其对文字的识别能力。Tesseract的OCR过程大致可以分为几个阶段:预处理、文字检测、文字分割、文字识别和后处理。

特点

多语言支持

Tesseract支持100多种语言的文字识别,包括多种字母和符号系统。用户可以根据需要下载和使用特定语言的训练数据。

灵活的预处理

虽然Tesseract本身提供了一些基本的图像预处理功能,但它也允许用户使用其他图像处理工具进行高级预处理,从而提高识别准确率。

可定制性

Tesseract允许用户通过训练自己的模型来优化识别结果,这对于专门的应用或不常见的字体类型尤其有用。

开源和免费

作为一个开源项目,Tesseract不仅免费使用,而且还鼓励开发者参与贡献,这使得它得到了广泛的社区支持和持续的改进。

应用场景

Tesseract OCR可以应用于多种文本识别场景,如:

  • 文档数字化:将纸质文档转化为电子文档,便于存储、检索和编辑。
  • 自动化数据录入:在行业如银行、保险等领域自动化处理表格、发票等文档。
  • 车牌识别:在交通管理和自动化停车系统中用于车牌号的识别。
  • 辅助阅读:帮助视力障碍人士读取各种印刷材料。

技术优势

成熟稳定

作为一个长期存在且经过广泛测试的项目,Tesseract的稳定性和可靠性得到了公认。

社区活跃

Tesseract有一个非常活跃的开源社区,不断提供bug修复、功能更新和支持。

可扩展性

Tesseract的设计使其可以轻松集成到其他应用程序中,并且可以通过插件或脚本扩展功能。

尽管Tesseract在某些复杂场景下的识别准确率可能不及专业的商业OCR软件,但其开源免费的特性以及不断进步的技术,使其在许多情况下仍然是首选的OCR工具。

【效果展示】

[C#]调用tesseact-ocr的traineddata模型进行ocr文字识别,C#,ocr
【官方实现部分代码】

Basic Text from Image from filepath
from Tesseract.ConsoleDemo/Program.cs
using (var engine = new TesseractEngine(@"./tessdata", "eng", EngineMode.Default))
    {
        using (var img = Pix.LoadFromFile(testImagePath))
        {
            using (var page = engine.Process(img))
            {
                var text = page.GetText();
                Console.WriteLine("Mean confidence: {0}", page.GetMeanConfidence());

                Console.WriteLine("Text (GetText): \r\n{0}", text);
                Console.WriteLine("Text (iterator):");
                }
        }
    }
Basic Text from Image bytes
FileStream fs = new FileStream(filename, FileMode.Open, file_access);
var ms = new MemoryStream();
fs.CopyTo(ms);
fs.Close();
bytes[] fileBytes = ms.ToArray();
ms.Close();
using (var engine = new TesseractEngine(@"./tessdata", "eng", EngineMode.Default))
     {
        using (var img = Pix.LoadFromMemory(fileBytes))
              {
              using (var page = engine.Process(img))
                    {
                        var txt = page.GetText();
                    }
              }
      }
Image to txt searchable pdf using paths
using (IResultRenderer renderer = Tesseract.PdfResultRenderer.CreatePdfRenderer(@"test.pdf", @"./tessdata", false))
    {
        // PDF Title
        using (renderer.BeginDocument("Serachablepdftest"))
        {
            string configurationFilePath = @"C:\tessdata";
            using (TesseractEngine engine = new TesseractEngine(configurationFilePath, "eng", EngineMode.TesseractAndLstm))
            {
                using (var img = Pix.LoadFromFile(@"C:\file-page1.jpg"))
                {
                    using (var page = engine.Process(img, "Serachablepdftest"))
                    {
                        renderer.AddPage(page);
                    }
                }
            }
        }
    }
Image to pdf returning file bytes
    var tmpPdfLocation = "./tessdata/pdf";
    var sep = Path.PathSeparator;
    var tmpFile = tmpPdfLocation + sep + Path.GetTempFileName();
    bytes[] fileBytes = null;
    using (IResultRenderer renderer = Tesseract.PdfResultRenderer.CreatePdfRenderer(tmpFile, @"./tessdata", false))
    {
        // PDF Title
        using (renderer.BeginDocument("Serachablepdftest"))
        {
            // string configurationFilePath = @"C:\tessdata";
            using (TesseractEngine engine2 = new TesseractEngine(configurationFilePath, "eng", EngineMode.TesseractAndLstm))
            {
                using (var img = Pix.LoadFromFile(@"C:\file-page1.jpg"))
                {
                    using (var page = engine.Process(img, "Searchablepdftest"))
                    {
                        renderer.AddPage(page);
                    }
                }
            }
           
        }

    }
    // on dispose file should be created
    var stream = new FileStream(tmpFile, FileMode.Open, FileAccess.Read);
    MemoryStream ms = new MemoryStream();
    stream.CopyTo(ms);
    fileBytes = ms.ToArray();
    stream.Dispose();
    ms.Close();
    // delete tmp file
    File.Delete(tmpFile);


【视频演示】

https://www.bilibili.com/video/BV1uT4y1n7SK/
【源码下载】

https://download.csdn.net/download/FL1623863129/88728947
【测试环境】

vs2019

netframework4.7.2文章来源地址https://www.toymoban.com/news/detail-783178.html

到了这里,关于[C#]调用tesseact-ocr的traineddata模型进行ocr文字识别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java调用tess4j完成 OCR 文字识别

    1,新建 maven 工程 2,引入依赖 dependency         groupIdnet.sourceforge.tess4j/groupId         artifactIdtess4j/artifactId         version5.11.0/version     /dependency 3,安装 tesseract-ocr 下载地址https://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-w64-setup-5.3.3.20231005.exe 其他版本可以查看 https://digi.bi

    2024年04月25日
    浏览(36)
  • java使用tesseract-ocr进行文字识别

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 公司使用AI进行OCR文字识别效果不好,并且提供的服务不稳定,本次查找到使用java也能连接的OCR开源项目进行识别的学习 tesseract-ocr是一个开源的OCR文字识别项目,目前版本已经更新到5.X.X了,并且提供

    2024年02月04日
    浏览(44)
  • OCR -- 文本检测 - 训练DB文字检测模型

    百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 预测部署简介与总览 百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 Paddle Inference 模型推理(离线部署) 百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 基于 Paddle Serving快速使用(服务化部署 - CentOS) 百度飞桨(PaddlePaddle) - PP

    2024年02月07日
    浏览(39)
  • 通用文字识别 本地OCR接口 json数据 任意语言 不限次调用 exe服务工具免搭建部署启动即用

    在这里插入图片描述 样本识别效果: 使用方法: 启动本地OCR接口服务 图片文件=base64编码=转json格式=传到对应接口 本地OCR程序: 文件太大没法传,要会员,我刚删掉了一个复杂模型,能用上得再问我要把。微:huang582716403

    2024年02月11日
    浏览(60)
  • 文字识别(OCR)专题——基于NCNN轻量级PaddleOCRv4模型C++推理

    PaddleOCR 提供了基于深度学习的文本检测、识别和方向检测等功能。其主要推荐的 PP-OCR 算法在国内外的企业开发者中得到广泛应用。在短短的几年时间里,PP-OCR 的累计 Star 数已经超过了32.2k,常常出现在 GitHub Trending 和 Paperswithcode 的日榜和月榜第一位,被认为是当前OCR领域最

    2024年03月11日
    浏览(87)
  • 2023-06-16 Android app 使用opencv 调用jni在图片上添加文字,对图片进行模糊处理,源码实例学习。

    一、要理解还是得自己看代码        1.1 完整的测试代码路径如下 https://download.csdn.net/download/qq_37858386/87916944        1.2 代码架构         1.3 app 运行效果 二、android studio 添加 opencv module可以参考下面的文章,比较详细。 Android + OpenCV 入门教程笔记(保姆级)_opencv android_派

    2024年02月09日
    浏览(63)
  • OCR文字识别技术

    OCR全称是optical character recognition,中文光学字符识别。 主要技术是:把图像形状转变为文本字符。 简单来说,OCR技术就是通过图像处理和模式识别技术对光学的字符进行识别,即,对文本资料进行扫描,然后对图像文件进行分析处理,获取文字及版面信息的过程。 OCR 支持各

    2024年02月08日
    浏览(45)
  • Python实现OCR文字识别

    OCR(Optical Character Recognition,光学字符识别)是指通过扫描纸质文档或照片,通过计算机对图像记录的文字进行识别的一种技术。本文介绍如何使用Python来实现OCR文字识别技术。 要实现Python的OCR文字识别,首先需要安装OCR软件和相关的包依赖,比如pytesseract和OpenCV。 安装pyt

    2024年02月16日
    浏览(38)
  • python之OCR文字识别

    将图片翻译成文字一般被称为光学文字识别(Optical Character Recognition,OCR)。可以实现OCR 的底层库并不多,目前很多库都是使用共同的几个底层OCR 库,或者是在上面进行定制。 easyocr是基于torch的深度学习模块 easyocr安装后调用过程中出现opencv版本不兼容问题,所以放弃此方案

    2024年02月20日
    浏览(40)
  • 百度OCR通用文字识别的使用

    目录 1、 首先进入百度AI开放平台,注册百度智能云账号,进入控制台并创建应用 1.1、 登录百度AI开放平台 1.2、 进入控制台-文字识别 1.3、 创建应用 1.4、 查看帮助文档 2、python下载baidu-aip库 3、两种方式调用api发送请求,获取文字识别结果 3.1、 通过AipOcr交互 3.1.1、 新建A

    2024年02月07日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包