提取图片文字转存为Searchable PDF

最近做了一个资产系统,用户需要对实物数据采集,商务机,笔记本电脑,硬盘等。
印在铭牌内容进行录入资产系统中。
想起了使用OCR进行提取图片中的文字。

此篇随笔,即是简单实现提取图片文字。
用户可以对铭牌拍照,上传,系统识别,存储为可搜索的PDF文档。这样用户可以复制识别的结果。

NuGet安装IronOCR。
这个非免费,商业使用需要购买。但你可以注册,可拥有1个月的使用期限。
2026-09-13_20-52-36

 

系统,需要开发让用户上传图片,IronOCR去识别上传的图片,处理并存储成为Searchable PDF,并显示回给用户或可供用户下载识别结果。
也可以让用户一次性多张图片批量上传,临时存储于数据表中。然后用户点击记录,可以看到识别的结果。

打开你的Web.config文件,
web.config → configuration → appSettings添加,

<add key="IronOcr.LicenseKey" value="IRONOCR-MYLICENSE-KEY-RENEW.SUPPORT.01.JAN.2050" />


上面的value值,请替换成你购买到 license。


接下来,编写Web API,

2026-09-20_10-32-39

 

 [HttpPost]
 public async Task<IHttpActionResult> ExtractText(OcrFile ocr)
 {
     Response _Data;

     try
     {
         if (ocr == null || string.IsNullOrEmpty(ocr.NewFileName))
         {
             return BadRequest("无效的文件信息");
         }

         string imagePath = Path.Combine(InsusIO.TempDirectory, ocr.NewFileName);

         if (!File.Exists(imagePath))
         {
             return BadRequest("文件不存在");
         }

         //输出准备
         string pdfFileName = $"{Guid.NewGuid()}.pdf";
         string outputPath = Path.Combine(InsusIO.TempDirectory, pdfFileName);

         string licenseKey = System.Configuration.ConfigurationManager.AppSettings["IronOcr.LicenseKey"];
         if (!IronOcr.License.IsValidLicense(licenseKey))
         {
             _Data = new Response()
             {
                 Status = false,
                 Message = "License is invalid or expired. Please verify your IronOCR key.",
                 Data = null
             };
         }
         else
         {
             IronOcr.License.LicenseKey = licenseKey;
             PerformOcr(imagePath, outputPath);

             //数所更新至数据库
             OcrFile ocr_file = new OcrFile()
             {
                 OcrFile_Id = ocr.OcrFile_Id,
                 PdfFileName = pdfFileName,
                 UpdatedBy = ocr.UpdatedBy
             };               
             await Task.Run(() => ocre.UpdatePdfFileName(ocr_file));

             //返回前端
             _Data = new Response()
             {
                 Status = true,
                 Message = "文字提取成功。",
                 Data = new OcrFile()
                 {
                     PdfFileName = pdfFileName
                 }
             };
         }

         return Ok(_Data);
     }
     catch (Exception ex)
     {
         return InternalServerError(new Exception($"OCR处理失败: {ex.Message}", ex));
     }
 }
View Code


上面的API,未看到处理的代码,只在#251行中有调用

PerformOcr(imagePath, outputPath)


方法详细代码,
2026-09-20_10-52-13


Insus.NET的实作过程,
用户对资产实物铭牌拍照,然后在系统上传。
然后点击记录,使用Iron OCR提取图片文件。把结果转存为可搜索的PDF文档。
生成的pdf文件名更新至数据库。
在资产录入时,点击已经生成pdf文档,把相关的数据拷贝至录入页面相关的字段内,存储资产数据。

Iron Ocr官网上,有许多技术文档可参考。
注册可以免费试用30天,
https://ironsoftware.com/zh/ocr/csharp/start-free/trial/

 评估自己商业考量希望得到技术支持,可以采购。



posted @ 2026-09-20 11:12  Insus.NET  阅读(4)  评论(0)    收藏  举报