如何在pytesseract中切换识别语言?lang参数设置无效如何解决?
解决方案
1. 先确认底层Tesseract引擎已安装法语语言包
pytesseract本身不内置语言模型,所有识别逻辑依赖本地安装的Tesseract OCR引擎,lang='fra'生效的前提是引擎已安装法语语言包:
- Windows:安装Tesseract时勾选
French语言包选项,安装完成后在命令行执行tesseract --list-langs,输出中包含fra即为安装成功 - Linux:执行
sudo apt install tesseract-ocr-fra安装 - macOS:执行
brew install tesseract-fra安装
2. 修正代码中lang参数的传参位置
你当前贴出的代码中两次调用image_to_string均未携带lang参数,即使修改了一处,空结果重试时依然会调用默认英文识别,需要两处都补充参数:
# 第一次识别加lang参数 out = pytesseract.image_to_string(erosion, lang='fra') if(len(out)==0): # 重试的识别逻辑也要加lang参数 out = pytesseract.image_to_string(erosion, lang='fra')
3. 补充识别配置提升法语识别准确率
针对你提取的小区域文字场景,可以添加psm分页模式参数,指定识别场景减少误判,同时增加二值化步骤强化文字对比度:
# 预处理新增二值化步骤 erosion = cv2.threshold(erosion, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1] # 识别时指定psm=7(假设识别内容为单行文本) out = pytesseract.image_to_string(erosion, lang='fra', config='--psm 7')
4. 全局设置默认识别语言(可选)
如果需要全局默认使用法语识别,无需每次传参,可以在代码初始化部分配置全局参数:
import pytesseract # Windows用户需要先指定Tesseract安装路径 pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe' # 全局配置默认识别语言为法语 pytesseract.pytesseract.tesseract_config = r'--lang fra'
内容的提问来源于stack exchange,提问作者Faizan Ahmad
相关产品推荐
相关产品推荐

