PaddleOCRSharp增加PDF识别,让你的代码更高效
-
读取 PDF 文件:
- 使用pdf库来读取 PDF 文件的内容。这些库可以解析 PDF 文档,并提取页面内容。
-
将 PDF 页面转换为图像:
- 利用 PDF 库,它可以将每一页的 PDF 内容转换为单独的图像文件或直接保存为多页图像文件。
-
处理图像质量:
- 转换后的图像可能需要进一步优化。例如,可以通过调整分辨率、对比度等参数来提高 OCR 识别的效果。
-
应用 OCR 技术:
- 使用如
PaddleOCR、Tesseract或其他 OCR 库对转换后的图像进行文字识别。
正文:
那么如何利用一个方法解决以上几个步骤?PaddleOCRSharp目前增加扩展组件库PaddleOCRSharp.PDF,在nuget上安装PaddleOCRSharp包之后再安装PaddleOCRSharp.PDF包即可。

关键代码也就一行。
PaddleOCREngine engine = new PaddleOCREngine(); var result = engine.DetectTextPDF(“PDF文件或者byte数组”);
// // 摘要: // PDF识别结果 public class PDFOCRResult { // // 摘要: // PDF识别每页结果集合 public List<OCRResult> Pages { get; set; } = new List<OCRResult>(); }
/// <summary> /// PDF识别 /// </summary> /// <param name="engine">OCR引擎</param> /// <param name="pdffile">PDF文件</param> /// <param name="dpi">导出图片的分辨,分辨率越高越清晰,图片像素越大</param> /// <param name="pageAction">拆分第几页事件回调</param> /// <returns>PDF识别结果</returns> public static PDFOCRResult DetectTextPDF(this PaddleOCREngine engine, string pdffile, float dpi = 150, Action<int> pageAction = null) /// <summary> /// PDF识别 /// </summary> /// <param name="engine">OCR引擎</param> /// <param name="pdfbytes">PDF文件byte数组</param> /// <param name="dpi">导出图片的分辨,分辨率越高越清晰,图片像素越大</param> /// <param name="pageAction">拆分第几页事件回调</param> /// <returns>PDF识别结果</returns> public static PDFOCRResult DetectTextPDF(this PaddleOCREngine engine, byte[] pdfbytes, float dpi = 150, Action<int> pageAction = null)
完整示例代码:
using PaddleOCRSharp; namespace ConsoleApp { internal class Program { static void Main(string[] args) { string pdf = "input.pdf"; PaddleOCREngine engine = new PaddleOCREngine(); DateTime dt1 = DateTime.Now; Action<int> action = new Action<int>(page => { Console.WriteLine($"正在处理第:{page}页"); }); var result = engine.DetectTextPDF(pdf,150, action); int pagecount = result.Pages.Count; Console.WriteLine($"总页数:{pagecount}"); DateTime dt2 = DateTime.Now; foreach (var page in result.Pages) { Console.WriteLine(page.Text); } Console.WriteLine($"总耗时:{(dt2 - dt1).TotalMilliseconds}ms"); Console.WriteLine($"平均耗时:{(dt2 - dt1).TotalMilliseconds / pagecount}ms"); Console.ReadLine(); } } }
写在最后:
PaddleOCRSharp适合哪些场景
PaddleOCRSharp主要应用场景:
文档数字化处理: 对于大量的纸质文档,PaddleOCRSharp可以快速地将其转化为电子文档,方便存储、检索和编辑。这在企业级应用中尤为重要,如图书馆、档案馆、政府部门等需要对大量文档进行数字化处理的场景。
自动识别表单数据: 在需要自动化处理表单数据的场景中,PaddleOCRSharp可以识别表单中的文字信息,并将其转化为结构化数据。这大大提高了数据录入的效率和准确性,特别适用于银行、保险、医疗等行业需要处理大量表单数据的场景。
车牌识别: PaddleOCRSharp也支持车牌识别功能,可以准确地识别出车辆的车牌号码。这对于交通管理、停车场管理、安防监控等场景非常有用,可以帮助实现车辆的快速识别和追踪。
图像文字提取: 在需要从图像中提取文字信息的场景中,如从截图、图片或PDF文件中提取文字,PaddleOCRSharp都能提供高精度的识别结果。这对于研究人员、学者、学生等需要处理大量图像文字信息的用户来说非常便捷。
多语言识别: PaddleOCRSharp支持多种语言的识别,包括中文、英文等常用语言。这使得它可以在国际化的应用场景中发挥重要作用,如跨境电商、国际交流等领域。
定制化需求: 对于有特殊需求的用户,PaddleOCRSharp提供了丰富的接口和模型库,可以根据具体需求进行定制化和扩展。这为用户提供了更多的灵活性和可能性,可以满足不同场景下的特定需求。 PaddleOCRSharp凭借其强大的OCR功能和广泛的应用场景,成为了.NET开发者在处理OCR任务时的有力工具。无论是企业级应用还是个人开发者,都可以通过PaddleOCRSharp快速实现OCR功能,提高工作效率和数据处理的准确性。
项目地址:
码云:https://gitee.com/raoyutian/PaddleOCRSharp
Github: https://github.com/raoyutian/PaddleOCRSharp
欢迎加入QQ交流群:318860399进行技术交流

浙公网安备 33010602011771号