python识别图片,只提取名字和身份证号,存储到表格,其他内容全部去掉。
时间: 2024-09-09 20:01:56 浏览: 77
在Python中,为了实现这个需求,你可以使用OCR(Optical Character Recognition,光学字符识别)技术来识别图片中的文本,特别是姓名和身份证号码。一种常用的方法是结合`pytesseract`库(基于Tesseract OCR引擎)和`PIL`(Python Imaging Library)来读取图像,并使用正则表达式处理识别结果。
首先,你需要安装必要的库,可以使用pip进行安装:
```bash
pip install pytesseract opencv-python Pillow regex
```
然后编写一个简单的脚本,如下所示:
```python
import cv2
import pytesseract
import re
def extract_text(image_path):
# 读取图片
img = cv2.imread(image_path)
# 转换为灰度图并进行预处理
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 使用Otsu's二值化
_, thresh = cv2.threshold(gray_img, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)
# 进行OCR识别
text = pytesseract.image_to_string(thresh, lang='chi_sim') # 使用简体中文语言模型
# 提取姓名和身份证号(假设身份证号长度固定)
name_pattern = r'[姓名]+'
id_number_pattern = r'\d{6}(?:\d{4})?(?:\d{2})*(?:[xX]\d{1})?'
name = re.search(name_pattern, text).group(0) if name_pattern.search(text) else ''
id_number = re.search(id_number_pattern, text).group(0) if id_number_pattern.search(text) else ''
return name, id_number
# 示例
image_path = 'path_to_your_image.jpg'
name, id_number = extract_text(image_path)
# 将结果存储到CSV或Excel文件,这里仅作展示
with open('output.csv', 'a', newline='') as file:
writer = csv.writer(file)
writer.writerow([name, id_number])
#
阅读全文