转载说明:原创不易,未经授权,谢绝任何形式的转载
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:
import pytesseract
from PIL import Image
import os
import sys
from wand.image import Image as WandImage
input_file = sys.argv[1]
output_file = sys.argv[2]
# 将PDF文件转换为图像文件
with WandImage(filename=input_file, resolution=300) as img:
img.compression_quality = 99
img.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
非直接翻译,有自行改编和添加部分,翻译水平有限,难免有疏漏,欢迎指正