图片转excel网站_怎么把图片转化为excel表格

(66) 2024-07-25 23:01:03

## 使用阿里云的读光ocr来把图片表格转为Excel

## @suyin

## 2020-06-19

## 读光 高精版 还有个一般精度的,可以搜索

https://duguang.aliyun.com/document/%E9%AB%98%E7%B2%BE%E7%89%88.html

# {

# //图像数据:base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,和url参数只能同时存在一个

# "img": "",

# //图像url地址:图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,和img参数只能同时存在一个

# "url": "",

# //是否需要识别结果中每一行的置信度,默认不需要。 true:需要 false:不需要

# "prob": false,

# //是否需要单字识别功能,默认不需要。 true:需要 false:不需要

# "charInfo": false,

# //是否需要自动旋转功能,默认不需要。 true:需要 false:不需要

# "rotate": false,

# //是否需要表格识别功能,默认不需要。 true:需要 false:不需要

# "table": false,

# //字块返回顺序,false表示从左往右,从上到下的顺序,true表示从上到下,从左往右的顺序,默认false

# "sortPage": false

# }

import urllib.request

import urllib.parse

import json

import time

import base64

jpg_path = 'test_orc__v3'

with open(jpg_path + '.jpg', 'rb') as f: # 以二进制读取本地图片

data = f.read()

encodestr = str(base64.b64encode(data),'utf-8')

#请求头

# 请修改为你自己的appcode,可从云市场订单或者api网关处获得

# 去注册了就在后台可以看到,把xxxxx改为你的appcode就好了

AppCode = "xxxxxx"

headers = {

'Authorization': 'APPCODE ' + AppCode,

'Content-Type': 'application/json; charset=UTF-8'

}

def posturl(url, data={}):

try:

params = json.dumps(dict).encode(encoding='UTF8')

req = urllib.request.Request(url, params, headers)

r = urllib.request.urlopen(req)

html =r.read()

r.close();

return html.decode("utf8")

except urllib.error.HTTPError as e:

print(e.code)

print(e.read().decode("utf8"))

time.sleep(1)

url_request = "https://ocrapi-advanced.taobao.com/ocrservice/advanced"

dict = {'img': encodestr,

'rotate': True,

'table': True}

html = posturl(url_request, data=dict)

# print(html)

text = json.loads(html)

# text

# text['prism_tablesInfo']

# //表格中单元格id,和prism_wordsInfo信息中的tableCellId对应

# "tableCellId": 0,

# //单元格中的文字

# "word": ":2017",

# //xStartCell缩写,表示横轴方向该单元格起始在第几个单元格,第一个单元格值为0

# "xsc": 0,

# //xEndCell缩写,表示横轴方向该单元格结束在第几个单元格,第一个单元格值为0,如果xsc和xec都为0说明该文字在横轴方向占据了一个单元

# 格并且在第一个单元格内

# "xec": 0,

# //yStartCell缩写,表示纵轴方向该单元格起始在第几个单元格,第一个单元格值为0

# "ysc": 0,

# //yEndCell缩写,表示纵轴方向该单元格结束在第几个单元格,第一个单元格值为0

# "yec": 0,

# //单元格位置,按照单元格四个角的坐标顺时针排列,分别为左上XY坐标、右上XY坐标、右下XY坐标、左下XY坐标

# "pos": [

# {

# "x": 107,

# "y": 203

# },

# {

# "x": 247,

# "y": 203

# },

xCellSize = text['prism_tablesInfo'][0]['xCellSize']

yCellSize = text['prism_tablesInfo'][0]['yCellSize']

word = text['prism_tablesInfo'][0]['cellInfos'][0]['word']

xsc = text['prism_tablesInfo'][0]['cellInfos'][0]['xsc']

xec = text['prism_tablesInfo'][0]['cellInfos'][0]['xec']

ysc = text['prism_tablesInfo'][0]['cellInfos'][0]['ysc']

yec = text['prism_tablesInfo'][0]['cellInfos'][0]['yec']

print('xCellSize:', xCellSize)

print('yCellSize:', yCellSize)

print('word:', word)

print('xsc:', xsc)

print('xec:', xec)

print('ysc:', ysc)

print('yec:', yec)

# !pip install xlwt

# http://www.ityouknow.com/python/2019/12/29/python-excel-103.html

# workbook = xlwt.Workbook(encoding='utf-8')

# worksheet = workbook.add_sheet('sheet1')

# #通过worksheet调用merge()创建合并单元格

# #第一个和第二个参数单表行合并,第三个和第四个参数列合并,

# #合并第0列到第2列的单元格

# worksheet.write_merge(0, 0, 0, 2, 'first merge')

# #合并第1行第2行第一列的单元格

# worksheet.write_merge(0, 1, 0, 0, 'first merge')

# workbook.save('students.xls')

# 导入 xlwt 库

import xlwt

# 创建 xls 文件对象

wb = xlwt.Workbook()

# 新增两个表单页

sheet_name = 'test'

sh1 = wb.add_sheet(sheet_name, cell_overwrite_ok=True)

# 数据写入Excel

# len(text['prism_tablesInfo'])

# 有多个table

prism_tablesInfo = text['prism_tablesInfo']

for table in prism_tablesInfo:

cellInfos = table['cellInfos']

for cell in cellInfos:

word = cell['word']

xsc = cell['xsc']

xec = cell['xec']

ysc = cell['ysc']

yec = cell['yec']

sh1.write(ysc, xsc, word)

# sh1.write_merge(ysc, yec, xsc, xec, word)

# print('word:', word, '-xsc:', xsc, 'xec:', xec, 'ysc:', ysc, 'yec:', yec)

# 最后保存文件即可

save_file = 'ocr测试__V4'

wb.save(save_file + '.xls')

THE END

发表回复