OCR 10几行Python代码,轻松实现PDF转文字

转载说明:原创不易,未经授权,谢绝任何形式的转载

OCR 10几行Python代码,轻松实现PDF转文字

Midjourney 创作,OCR
在这篇文章中,我将介绍如何使用Pytesseract和Imagemagick从扫描的PDF文档中提取文本 。这种技术可以帮助您快速、准确地处理大量文本数据 。这对于那些需要处理大量扫描文档的人来说尤其有用,比如在法律、医疗或教育领域 。

简介

光学字符识别(OCR)是一项技术,可以将包含文本的扫描文档、图像或PDF文件转换为可搜索和可编辑的数字格式 。本文将探讨如何设置和使用Pytesseract和Imagemagick进行OCR处理,Pytesseract是一个使用Google的Tesseract引擎的OCR工具,Imagemagick则是一个功能强大的图像处理库 。

安装库

pytesseract
pytesseract是一个Python的OCR(Optical Character Recognition,光学字符识别)库,它是由Google开源的Tesseract OCR Engine进行封装的 , 可以将图片中的文字转换为字符串 。pytesseract可以通过pip安装 , 支持Windows、macOS和Linux系统 。使用pytesseract时,需要先安装Tesseract OCR Engine,并将其添加到环境变量中,然后在Python中调用pytesseract模块进行使用 。它的接口非常简单易用,能够快速地识别图片中的文本内容 。
pip install pytesseract
tesseract
Tesseract是一个开源OCR引擎,最初由惠普实验室开发,现在由谷歌进行维护和开发 。Tesseract可以识别多种语言的文本,包括中文、英文、日文、法文等等 。Tesseract使用基于神经网络的算法 , 可以进行字符识别、单词识别和行识别等任务 。Tesseract的识别能力取决于训练数据和图像质量等因素,因此在使用Tesseract进行OCR文本识别时,需要进行一些预处理操作,以提高识别准确率 。
brew install tesseract
注意:如果您需要使用Tesseract进行中文文本识别,还需要安装中文语言包 。可以在Tesseract的官方GitHub仓库中下载中文语言包,并按照官方文档的指引进行安装 。在Tesseract的官方GitHub仓库中找到chi_sim和chi_tra语言包 。chi_sim是简体中文语言包 , chi_tra是繁体中文语言包 。https://github.com/tesseract-ocr/tesseract
windows安装 , 请参考:https://github.com/UB-Mannheim/tesseract/wiki 这个链接
ImageMagick
ImageMagick是一款功能强大的开源图像处理库,可以在各种平台上运行 。ImageMagick提供了丰富的图像处理功能 , 包括图像格式转换、缩放、旋转、裁剪、特效处理、色彩空间转换、降噪等等 。ImageMagick支持多种图像格式,包括JPEG、PNG、GIF、TIFF等等,并且可以对这些图像进行处理、转换和优化 。使用ImageMagick,可以在不同的操作系统和编程语言环境下,对图像进行高效的处理和优化 。
brew install imagemagick
windows安装请参考这个链接:https://imagemagick.org/script/download.php

代码部分

使用Pytesseract和Imagemagick,您可以使用以下Python脚本来对扫描的PDF进行OCR:
【OCR 10几行Python代码,轻松实现PDF转文字】import pytesseractfrom PIL import Imageimport osimport sysfrom wand.image import Image as WandImageinput_file = sys.argv[1]output_file = sys.argv[2]# 将PDF文件转换为图像文件with WandImage(filename=input_file, resolution=300) as img:img.compression_quality = 99img.save(filename='temp_images/page.jpg')# 使用Pytesseract进行OCR# 设置语言参数为中文language = 'chi_sim'text = ''for i, file in enumerate(sorted(os.listdir('temp_images'))):with Image.open(f'temp_images/{file}') as img:text= pytesseract.image_to_string(img,lang=language)# 将OCR文本保存到文件中with open(output_file, 'w', encoding='utf-8') as f:f.write(text)# 清除临时图像for file in os.listdir('temp_images'):os.remove(f'temp_images/{file}')
注:需要注意你的网络链接 , 能连接“国际网络”,要不会提示网络错误
要使用此脚本,将其保存为“pdf_ocr.py” , 并在终端(Mac)或命令提示符(Windows)中运行以下命令,将“input.pdf”替换为扫描PDF文件的路径 , “output.txt”替换为所需的输出文件名:
python pdf_ocr.py input.pdf output.txt
这个脚本执行以下操作:
使用Imagemagick的Wand库将输入PDF文件转换为一系列图像,并将这些图像保存在名为“temp_images”的临时文件夹中 。分辨率参数设置为300 DPI以提高OCR准确性 。遍历这些图像 , 使用Pytesseract进行OCR,将识别出的文本附加到一个字符串变量中 。将识别出的文本写入指定的输出文件中 。清除“temp_images”文件夹中的临时图像 。

结束

使用Pytesseract和Imagemagick,您可以在Windows和Mac平台上轻松进行扫描PDF的OCR 。通过遵循这个指南 , 您可以设置必要的工具并创建一个简单的Python脚本,将扫描的PDF转换为可搜索和可编辑的文本文件 。这个解决方案不仅高效,而且高度可定制 , 可以根据您的特定需求进行适应,并改进文档处理工作流程 。通过使用OCR技术,您可以提高文档处理的效率和准确性 , 节省大量时间和人力成本,为您的业务和个人生活带来便利和效益 。
今天的分享就到这里,感谢你的阅读 , 希望能够帮助到你,文章创作不易,如果你喜欢我的分享 , 别忘了点赞转发,让更多有需要的人看到,最后别忘记关注「前端达人」,你的支持将是我分享最大的动力,后续我会持续输出更多内容,敬请期待 。
原文:https://medium.com/python-in-plain-english/big-ocr-scanned-pdfs-with-pytesseract-and-imagemagick-d989d838cd02
作者:Yancy Dennis
非直接翻译,有自行改编和添加部分 , 翻译水平有限,难免有疏漏,欢迎指正

相关经验推荐