Windows环境下TesseractNotFoundError报错的解决方法咨询
解决TesseractNotFoundError问题(Windows+Anaconda+Spyder环境)
问题场景
在Windows系统、Anaconda环境下使用Spyder作为IDE,尝试对PDF文件中的图片应用Tesseract-OCR时,触发错误:
TesseractNotFoundError: C:\Users\jsbno\AppData\Local\Programs\Tesseract-OCR未安装或未在PATH中。
用户运行的代码如下:
from pathlib import Path from PIL import Image import pytesseract import typing from borb.pdf.pdf import PDF from borb.pdf import Document from borb.toolkit.ocr.ocr_as_optional_content_group import OCRAsOptionalContentGroup from borb.toolkit.text.simple_text_extraction import SimpleTextExtraction pytesseract.pytesseract.tesseract_cmd = r'C:\Users\jsbno\AppData\Local\Programs\Tesseract-OCR' def apply_ocr_to_document(): # Set up everything for OCR tesseract_data_dir: Path = Path("C:\\Temp") assert tesseract_data_dir.exists() l: OCRAsOptionalContentGroup = OCRAsOptionalContentGroup(tesseract_data_dir) # Read Document doc: typing.Optional[Document] = None with open("C:\\Temp\\paklijst1.pdf", "rb") as pdf_file_handle: doc = PDF.loads(pdf_file_handle, [l]) assert doc is not None # Initialize SimpleTextExtraction with the OCR result text_extraction = SimpleTextExtraction(doc) # Extract the text from the document extracted_text = text_extraction.extract() # Print the extracted text print(extracted_text) # Call the function to apply OCR and extract the text apply_ocr_to_document()
解决方案
修正
tesseract_cmd路径
当前代码指定的是Tesseract的安装文件夹,但pytesseract需要指向可执行文件的完整路径。修改代码中的对应行:pytesseract.pytesseract.tesseract_cmd = r'C:\Users\jsbno\AppData\Local\Programs\Tesseract-OCR\tesseract.exe'重启程序验证PATH生效
环境变量修改后需要重启程序才能生效,关闭所有Spyder和Anaconda终端窗口,重新启动后测试。也可以在Anaconda CMD中执行tesseract --version,若能输出版本信息则PATH配置正确。检查Tesseract安装完整性
确认安装路径下存在tesseract.exe和tessdata语言包文件夹,若tessdata缺失,需重新安装Tesseract并勾选语言包选项。手动配置Spyder的环境变量
Spyder可能无法自动继承系统PATH的最新修改,可手动添加:- 打开Spyder,进入
工具->偏好设置->Python解释器 - 找到
环境变量选项,点击编辑 - 添加
C:\Users\jsbno\AppData\Local\Programs\Tesseract-OCR到PATH列表,保存后重启Spyder。
- 打开Spyder,进入
修正borb的OCR数据目录配置
OCRAsOptionalContentGroup需要指向Tesseract的tessdata目录,而非临时文件夹,修改对应代码:tesseract_data_dir: Path = Path(r"C:\Users\jsbno\AppData\Local\Programs\Tesseract-OCR\tessdata") assert tesseract_data_dir.exists()
内容的提问来源于stack exchange,提问作者JustinB
相关产品推荐
相关产品推荐

