基于python 图片识别数字填入表格保存本地
时间: 2023-07-29 20:09:10 浏览: 153
基于Python的一个自动录入表格的小程序
5星 · 资源好评率100%
实现这个功能需要用到Python的图像处理库和表格处理库,推荐使用Pillow和OpenPyXL库。
步骤:
1. 使用Pillow库读取图片,将其转换为灰度图像,然后应用阈值二值化,使数字部分变为纯黑色,背景变为白色。
2. 使用OpenCV或其他图像处理库提取图像中的数字区域,并将每个数字区域保存为单独的图像文件或numpy数组。
3. 使用机器学习或其他数字识别算法对每个数字图像进行识别,将其转换为数字字符串。
4. 使用OpenPyXL库创建Excel表格,将识别出的数字填入合适的单元格中。
5. 保存Excel表格至本地。
代码示例:
```python
from PIL import Image
import cv2
import pytesseract
import openpyxl
# 读取图片并转换为灰度图像
img = Image.open('test.png').convert('L')
# 应用阈值二值化
threshold = 127
img = img.point(lambda p: p > threshold and 255)
# 提取数字区域
contours, hierarchy = cv2.findContours(cv2.inRange(np.array(img), 0, 1), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
digit_images = []
for c in contours:
x, y, w, h = cv2.boundingRect(c)
digit_images.append(np.array(img.crop((x, y, x+w, y+h))))
# 识别数字
digits = []
for digit_img in digit_images:
digit_str = pytesseract.image_to_string(digit_img, config='--psm 10 --oem 3 -c tessedit_char_whitelist=0123456789')
digits.append(int(digit_str.strip()))
# 创建Excel表格并填入数字
wb = openpyxl.Workbook()
ws = wb.active
for i, digit in enumerate(digits):
ws.cell(row=i//5+1, column=i%5+1, value=digit)
# 保存Excel表格
wb.save('result.xlsx')
```
需要注意的是,数字识别算法的准确率取决于图片质量和数字区域提取的精度,可能需要根据具体情况进行调整。
阅读全文