You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用img2table+EasyOCR识别泰米尔语文本时触发RuntimeError

解决img2table结合EasyOCR识别泰米尔语表格时的RuntimeError

问题场景

我正在用img2table提取含泰米尔语的表格文本,因EasyOCR支持多语言识别,故将二者结合使用,但运行以下代码时出现错误:

img = cv2.imread("./3.jpg")
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
languages = ['en', 'ta']
kw = {"gpu": False}
easyocr = EasyOCR(lang = languages,kw=kw)

错误信息

RuntimeError                              Traceback (most recent call last)
Cell In[52], line 1
----> 1 easyocr = EasyOCR(lang = languages,kw=kw)

File c:\Users\XXXXX\AppData\Local\Programs\Python\Python311\Lib\site-packages\img2table\ocr\easyocr.py:38, in EasyOCR.__init__(self, lang, kw)
     35 kw["lang_list"] = self.lang
     36 kw["verbose"] = kw.get("verbose") or False
---> 38 self.reader = Reader(**kw)

File c:\Users\XXXXX\AppData\Local\Programs\Python\Python311\Lib\site-packages\easyocr\easyocr.py:231, in Reader.__init__(self, lang_list, gpu, model_storage_directory, user_network_directory, detect_network, recog_network, download_enabled, detector, recognizer, verbose, quantize, cudnn_benchmark)
    229 else:
    230     network_params = recog_config['network_params']
---> 231 self.recognizer, self.converter = get_recognizer(recog_network, network_params,\
    232                                              self.character, separator_list,\
    233                                              dict_list, model_path, device = self.device, quantize=quantize)

File c:\Users\XXXXX\AppData\Local\Programs\Python\Python311\Lib\site-packages\easyocr\recognition.py:174, in get_recognizer(recog_network, network_params, character, separator_list, dict_list, model_path, device, quantize)
    172     new_key = key[7:]
    173     new_state_dict[new_key] = value
---> 174 model.load_state_dict(new_state_dict)
    175 if quantize:
    176     try:

File c:\Users\XXXXX\AppData\Local\Programs\Python\Python311\Lib\site-packages\torch\nn\modules\module.py:2152, in Module.load_state_dict(self, state_dict, strict, assign)
   2147         error_msgs.insert(
   2148             0, 'Missing key(s) in state_dict: {}. '.format(
   2149                 ', '.join(f'"{k}"' for k in missing_keys)))
   2151 if len(error_msgs) > 0:
-> 2152     raise RuntimeError('Error(s) in loading state_dict for {}:\n\t{}'.format(
   2153                        self.__class__.__name__, "\n\t".join(error_msgs)))
   2154 return _IncompatibleKeys(missing_keys, unexpected_keys)

RuntimeError: Error(s) in loading state_dict for Model:
    size mismatch for Prediction.weight: copying a param with shape torch.Size([143, 512]) from checkpoint, the shape in current model is torch.Size([127, 512]).
    size mismatch for Prediction.bias: copying a param with shape torch.Size([143]) from checkpoint, the shape in current model is torch.Size([127]).

环境版本

  • Python 3.11.8
  • easyocr 1.7.1
  • img2table 1.2.8

解决方案

这个错误源于EasyOCR预训练模型与当前字符集维度不匹配,泰米尔语模型的字符数和加载的模型参数维度不一致,以下是几种可行的解决方法:

1. 清理缓存并重新下载模型

EasyOCR会将预训练模型缓存到本地,缓存的旧版本模型可能与当前easyocr版本不兼容:

  • 找到模型缓存目录:C:\Users\你的用户名\.EasyOCR\model
  • 删除该目录下所有文件和文件夹
  • 重新运行代码,EasyOCR会自动下载对应版本的多语言模型

2. 显式指定兼容的识别网络

初始化时指定recog_network参数,选择支持泰米尔语的网络版本:

img = cv2.imread("./3.jpg")
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
languages = ['en', 'ta']
kw = {"gpu": False, "recog_network": 'english_g2'}
easyocr = EasyOCR(lang = languages, kw=kw)

也可尝试使用多语言专用网络'multi_lang'(需确认版本支持)。

3. 调整依赖版本

当前img2table 1.2.8与easyocr 1.7.1存在兼容性问题,可降低easyocr版本:

pip install easyocr==1.6.2

4. 绕过img2table封装,直接初始化EasyOCR Reader

直接创建EasyOCR的Reader实例,再传给img2table使用:

import cv2
from easyocr import Reader
from img2table.ocr import EasyOCR as Img2TableEasyOCR

img = cv2.imread("./3.jpg")
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

# 直接初始化EasyOCR Reader
reader = Reader(lang_list=['en', 'ta'], gpu=False)
# 传给img2table的EasyOCR封装
easyocr = Img2TableEasyOCR(reader=reader)

# 后续执行img2table表格提取逻辑

内容的提问来源于stack exchange,提问作者NISHITH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 13:16:23