将图片扫面并转化为excel文件
from django.shortcuts import render,HttpResponse,redirect
from django.http import HttpResponse
import os
import cv2
import pandas as pd
from PIL import Image
import pytesseract
import io
import openpyxl
tesseract_cmd = r'D:\develop\Tesseract\tesseract'
pytesseract.pytesseract.tesseract_cmd =tesseract_cmd
#导入 views
# Create your views here.
def team_index(request):
if request.method == 'POST' and request.FILES['image']:
# 接收上传的图片文件
image_file = request.FILES['image']
# 读取图片并识别文字
image = Image.open(image_file)
text = pytesseract.image_to_string(image, lang='eng')
# 将识别出来的文字存为Excel文件
output = io.BytesIO()
writer = pd.ExcelWriter(output, engine='openpyxl')
df = pd.DataFrame({'Text': [text]})
df.to_excel(writer, sheet_name='Sheet1', index=False)
writer._save()
output.seek(0)
# 返回Excel文件给用户下载
response = HttpResponse(output.getvalue(), content_type='application/vnd.ms-excel')
response['Content-Disposition'] = 'attachment; filename=over.xlsx'
return response
return render(request, 'index.html')
- 用户通过表单上传图片文件。
- 代码接收上传的图片文件。
- 使用
PIL
库的Image.open()
方法打开图片文件。 - 使用
pytesseract
库对图片进行文字识别,将识别结果保存在变量text
中。 - 创建一个
BytesIO
对象output
,用于将 DataFrame 存储为字节。 - 使用
pd.ExcelWriter()
方法创建一个 ExcelWriter 对象writer
,指定引擎为'openpyxl'
。 - 创建一个 DataFrame
df
,其中包含一个列'Text'
,值为识别出的文字内容。 - 使用
df.to_excel()
方法将 DataFrame 写入 Excel 文件,指定 sheet 名称为'Sheet1'
,并禁用索引列。 - 使用
writer.save()
方法保存 Excel 文件。 - 将
output
的指针移动到文件的起始位置,以便读取文件内容。 - 创建一个
HttpResponse
对象response
,将 Excel 文件内容作为响应的内容。 - 设置响应的内容类型为
'application/vnd.ms-excel'
,指定下载的文件名为'over.xlsx'
。 - 返回响应对象给用户,浏览器将开始下载 Excel 文件。
因此,当用户上传图片后,服务器会对图片进行文字识别并将结果保存为 Excel 文件,最后将该 Excel 文件返回给用户进行下载。
标签:文件,excel,每日,writer,Excel,output,小结,image From: https://www.cnblogs.com/jingyk/p/17421554.html