找回密码
 立即注册
首页 业界区 安全 PaddleOCRSharp增加PDF识别,让你的代码更高效 ...

PaddleOCRSharp增加PDF识别,让你的代码更高效

奚娅琼 2025-9-24 16:48:10
前言:    在实际项目中,经常会遇到需要从 PDF 文件中提取文本信息的需求。由于 PDF 文档通常包含多种格式和布局,直接使用 OCR 技术对其进行识别并不总是最优的选择。因此,在进行 OCR 之前,通常需要将 PDF 内容转换为图像文件,以便更有效地应用 OCR 算法。一般步骤是:
    <br>
  • 读取 PDF 文件:<br>
      <br>
    • 使用pdf库来读取 PDF 文件的内容。这些库可以解析 PDF 文档,并提取页面内容。<br>
    <br>
  • 将 PDF 页面转换为图像:<br>
      <br>
    • 利用 PDF 库,它可以将每一页的 PDF 内容转换为单独的图像文件或直接保存为多页图像文件。<br>
    <br>
  • 处理图像质量:<br>
      <br>
    • 转换后的图像可能需要进一步优化。例如,可以通过调整分辨率、对比度等参数来提高 OCR 识别的效果。<br>
    <br>
  • 应用 OCR 技术:<br>
      <br>
    • 使用如 PaddleOCR、Tesseract 或其他 OCR 库对转换后的图像进行文字识别。<br>
    <br>
正文:<br><br>那么如何利用一个方法解决以上几个步骤?PaddleOCRSharp目前增加扩展组件库PaddleOCRSharp.PDF,在nuget上安装PaddleOCRSharp包之后再安装PaddleOCRSharp.PDF包即可。<br>
1.png
<br> <br>关键代码也就一行。
  1. PaddleOCREngine engine = new PaddleOCREngine();<br><br> var result = engine.DetectTextPDF(“PDF文件或者byte数组”);
复制代码
  1. [/code]返回结果是一个对象包含一个Pages属性,Pages属性包含PDF的每一页的OCRResult信息。OCRResult就是PaddleOCRSharp的OCR图片识别结果,包含文本坐标置信度等信息。[code]//<br>// 摘要:<br>//     PDF识别结果<br>public class PDFOCRResult<br>{<br>    //<br>    // 摘要:<br>    //     PDF识别每页结果集合<br>    public List<OCRResult> Pages { get; set; } = new List<OCRResult>();<br><br>}
复制代码
PaddleOCRSharp.PDF包含两个重载方法,分别满足传参文件路径和文件流。
  1. [/code][code]/// <summary><br>/// PDF识别<br>/// </summary><br>/// <param name="engine">OCR引擎</param><br>/// <param name="pdffile">PDF文件</param><br>/// <param name="dpi">导出图片的分辨,分辨率越高越清晰,图片像素越大</param><br>/// <param name="pageAction">拆分第几页事件回调</param><br>/// <returns>PDF识别结果</returns><br>public static PDFOCRResult DetectTextPDF(this PaddleOCREngine engine, string pdffile, float dpi = 150, Action<int> pageAction = null)<br><br>/// <summary><br> /// PDF识别<br> /// </summary><br> /// <param name="engine">OCR引擎</param><br> /// <param name="pdfbytes">PDF文件byte数组</param><br> /// <param name="dpi">导出图片的分辨,分辨率越高越清晰,图片像素越大</param><br> /// <param name="pageAction">拆分第几页事件回调</param><br> /// <returns>PDF识别结果</returns><br> public static PDFOCRResult DetectTextPDF(this PaddleOCREngine engine, byte[] pdfbytes, float dpi = 150, Action<int> pageAction = null)
复制代码
  1. [/code] <br>[code]
复制代码
完整示例代码:
  1. using PaddleOCRSharp;<br>namespace ConsoleApp<br>{<br>    internal class Program<br>    {<br>        static void Main(string[] args)<br>        {<br>            string pdf = "input.pdf";<br>            PaddleOCREngine engine = new PaddleOCREngine();<br>            DateTime dt1 = DateTime.Now;<br>            Action<int> action = new Action<int>(page => {<br>                Console.WriteLine($"正在处理第:{page}页");<br>            });<br>            var result = engine.DetectTextPDF(pdf,150, action);<br>            int pagecount = result.Pages.Count;<br>            Console.WriteLine($"总页数:{pagecount}");<br>            DateTime dt2 = DateTime.Now;<br>            foreach (var page in result.Pages)<br>            {<br>                Console.WriteLine(page.Text);<br>            }<br>            Console.WriteLine($"总耗时:{(dt2 - dt1).TotalMilliseconds}ms");<br>            Console.WriteLine($"平均耗时:{(dt2 - dt1).TotalMilliseconds / pagecount}ms");<br>            Console.ReadLine();<br>        }<br>    }<br>}
复制代码
 <br>
  1. <br>
复制代码
写在最后:PaddleOCRSharp适合哪些场景<br><br>addleOCRSharp主要应用场景:<br>文档数字化处理: 对于大量的纸质文档,PaddleOCRSharp可以快速地将其转化为电子文档,方便存储、检索和编辑。这在企业级应用中尤为重要,如图书馆、档案馆、政府部门等需要对大量文档进行数字化处理的场景。<br>自动识别表单数据: 在需要自动化处理表单数据的场景中,PaddleOCRSharp可以识别表单中的文字信息,并将其转化为结构化数据。这大大提高了数据录入的效率和准确性,特别适用于银行、保险、医疗等行业需要处理大量表单数据的场景。<br>车牌识别: PaddleOCRSharp也支持车牌识别功能,可以准确地识别出车辆的车牌号码。这对于交通管理、停车场管理、安防监控等场景非常有用,可以帮助实现车辆的快速识别和追踪。<br>图像文字提取: 在需要从图像中提取文字信息的场景中,如从截图、图片或PDF文件中提取文字,PaddleOCRSharp都能提供高精度的识别结果。这对于研究人员、学者、学生等需要处理大量图像文字信息的用户来说非常便捷。<br>多语言识别: PaddleOCRSharp支持多种语言的识别,包括中文、英文等常用语言。这使得它可以在国际化的应用场景中发挥重要作用,如跨境电商、国际交流等领域。<br>定制化需求: 对于有特殊需求的用户,PaddleOCRSharp提供了丰富的接口和模型库,可以根据具体需求进行定制化和扩展。这为用户提供了更多的灵活性和可能性,可以满足不同场景下的特定需求。 PaddleOCRSharp凭借其强大的OCR功能和广泛的应用场景,成为了.NET开发者在处理OCR任务时的有力工具。无论是企业级应用还是个人开发者,都可以通过PaddleOCRSharp快速实现OCR功能,提高工作效率和数据处理的准确性。<br>项目地址:<br>码云:https://gitee.com/raoyutian/PaddleOCRSharp<br>Github: https://github.com/raoyutian/PaddleOCRSharp<br> <br>欢迎加入QQ交流群:318860399进行技术交流<br><br> <br>
2.png
<br> <br><br>来源:程序园用户自行投稿发布,如果侵权,请联系站长删除<br>免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册