2,091
社区成员




求大神指点报错
代码如下
import easyocr
import os
import re
import pandas as pd
class id_card_ocr():
def __init__(self): # 文件位置
self.images = r'D:/id_card' # 需要注意的是,图片文件的名称不能有汉字,否则会报错~
def ocr_reader(self): # 创建ocr对象,识别中英文
ocr = easyocr.Reader(['ch_sim','en'],gpu=True)
return ocr
def read_content(self): # 识别图片文字,并遍历
data = []
for image in os.listdir(self.images):
content = self.ocr_reader().readtext(f'{self.images}/{image}',detail=0)
content = ''.join(content) # 列表转换为纯文本
new_content = content.replace(" ", "") # 去除掉空格内容
print(f'正在识别:{image}')
name = re.findall(r'名(.*?)性', new_content)
gender = re.findall(r'别(.*?)民族|民', new_content)
nation = re.findall(r'族|民族(.*?)出', new_content)
address = re.findall(r'址(.*?)公', new_content)
number = re.findall(r'身份号码(\d+)', new_content)
new_name = ''.join(name)
new_gender = ''.join(gender)
new_nation = ''.join(nation)
new_address = ''.join(address)
new_number = ''.join(number)
if len(new_number) == 18: # 判断身份证的位数
pass
elif len(new_number) == 17:
new_number = new_number + "X"
print(f'完成识别:{image}')
data.append([new_name, new_gender, new_nation, new_address, new_number])
print(data)
return data
def read_to_excel(self):
df = pd.DataFrame(self.read_content(),columns = ['姓名','性别','民族','地址','身份证号码'])
print(f'识别结果如下:')
print(df)
df.to_excel(r'D:/id_card/识别结果.xlsx',index=False)
return df
if __name__ == '__main__':
info = id_card_ocr()
info.read_content()
info.read_to_excel()
报错如下
S C:\Users\Administrator> & C:/Users/Administrator/AppData/Local/Programs/Python/Python38/python.exe d:/批量识别身份证.py
Traceback (most recent call last):
File "d:/批量识别身份证.py", line 1, in <module>
import easyocr
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\site-packages\easyocr\__init__.py", line 1, in <module>
from .easyocr import Reader
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\site-packages\easyocr\easyocr.py", line 3, in <module>
from .detection import get_detector, get_textbox
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\site-packages\easyocr\detection.py", line 11, in <module>
from .craft import CRAFT
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\site-packages\easyocr\craft.py", line 11, in <module>
from .model.modules import vgg16_bn, init_weights
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\site-packages\easyocr\model\modules.py", line 6, in <module>
from torchvision.models.vgg import model_urls
ImportError: cannot import name 'model_urls' from 'torchvision.models.vgg' (C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\site-packages\torchvision\models\vgg.py)
PS C:\Users\Administrator>