# !/usr/bin/env/python # -*- coding:utf-8 -*- from flask import Flask, render_template, request from datetime import timedelta import requests from utils.img2latex import get_ocrlatex_by_url headers = {'Pragma': 'no-cache', 'Cache-Control': 'no-cache', 'X-USER-TOKEN': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiIyMCIsInVzZXJOYW1lIjoiSFgwMDEyMTM4IiwiZXhwIjoxNTY2Mzg3ODA1LCJ1c2VySWQiOiIyMCIsImlhdCI6MTU2NjM3MzQwNX0.9w__2RGncpdMvbiQAmk75ThgPwDaTXF1VyY1xKVs_zFduUEoJ3_6X2q3ZVYsFIpChKeLEWelhwlmMxEP4lU9QA', 'Origin': 'http://xx.cn', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Safari/537.36', 'Accept': '*/*', # 'Content-Type': 'multipart/form-data; boundary=----WebKitFormBoundarycDnnz7eKalCPv6GJ', 'Referer': '', 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8'} url = "http://192.168.1.140:18085/upload" import json data = {'callback_url': "http://zsytk.dev.xueping.com/wordapi/index/wid/9668", "mydata": json.dumps([{"file_type": "", "file_url": "http://zsytk.dev.xueping.com/data/word/2020/08/5f327c08f3576.doc"}],ensure_ascii=False).encode("utf-8") } # print(requests.Request('POST', url, data=data, json=json).prepare().body.decode( # 'ascii')) # 打印字段名和类型 # r = requests.post(url, data=data, headers=headers) # print(r.text) # # { % # for sub in item[2:5] %} # { % if "src" in sub %} # < img # src = "data:;base64,{{ img_stream }}" > # { % endif %} # { % endfor %} import re pattern_2 = re.compile( r"(([CDE]\s*[..、、]|\([CDE]\)).+?)(?3) # p1 = re.search("(?)'.format(m), # sub1, item_str) # # items_list = eval(item_str) # print(items_list) # 入库时将latex替换为图片测试 from pprint import pprint ltx2url = {"\\begin{array}{cccccccc}& \\text{CO}& \\text{+}& {\\text{H}}_{\\text{2}}\\text{S}& \\stackrel{}{⇌}& \\text{COS}& \\text{+}& {\\text{H}}_{\\text{2}}\\\\ 开始\\text{/mol}& \\text{a}& & \\text{a}& & \\text{0}& & \\text{0}\\\\ 转化\\text{/mol}& \\text{x}& & \\text{x}& & \\text{x}& & \\text{x}\\\\ 平衡\\text{/mol}& \\text{a-x}& & \\text{a-x}& & \\text{x}& & \\text{x}\\end{array}": "",} def sub2(s): if s: all_ltx = re.findall(r'\$.*?\$', s) # 查找试题结构中的公式 all_ltx.extend(re.findall('\\\\\(.*?\\\\\)', s)) all_ltx = list(set(all_ltx)) for ltx in all_ltx: new_ltx = ltx.replace("$", "").replace("\\(", "").replace("\\)", "").replace("&", "&") if new_ltx in ltx2url: # 将latex换为其渲染图片的线上可访问地址 s = s.replace(ltx, ltx2url[new_ltx]) return s items_res_to_xbk = [ {"repeat_res": [], "topic_type_id": 40, "stem": "含硫废气的处理越来越成为化工生产等领域的重要课题。回答下列问题:
Ⅰ.CO可将工业尾气中的转化为化工原料羰基硫(COS):
(1)恒温恒容条件下,密闭容器中发生上述反应,下列事实不能说明反应达到平衡状态的是_______(填序号)。
a.
b.COS和的浓度之和保持不变
c.混合气体的平均相对分子质量不变
d.单位时间内断裂键与断裂键数目相等
(2)T℃时,在恒容的密闭容器中充入等物质的量CO和发生反应,实验测得反应前容器内压强为,10min达到平衡时的分压为
①CO的平衡转化率为_______(用含的代数式表示),
②该反应的平衡常数_______(用含的代数式表示,列出表达式即可)。
(3)在某密闭容器中,以一定投料比进行上述反应,相同时间内的转化率与温度(T)的关系如图所示,_______(填“>”或“<”)0,其原因是_______。

Ⅱ.工业尾气中的是环境污染的主要原因之一,工业上可采用钙基固硫法或电解法降低尾气中的含硫量。
(4)已知:
a.
b.
c.
_______。在一定温度下,该反应达到平衡时向容器中通入少量,则反应再次达到平衡时将_______(填“增大”“减小”或“不变”)。
(5)利用如图所示装置可吸收工业尾气中的,同时还可吸收尾气中的NO。电解池中膜c为_______(填“阴”或“阳”)离子交换膜,阴极的电极反应为_______,当利用此装置吸收标准状况下2.24LNO时,阳极区溶液质量变化量为_______。
", "key": "(1)acd
(2)
(3) < 反应达平衡后,温度升高,的转化率降低,升温平衡逆向移动,故正反应方向为放热反应
(4) -402kJ/mol 不变
(5) 阳 6.2g", "parse": "(1)a.任意时刻均有,反应不一定达到了平衡,a符合题意;
b.COS和的浓度之和保持不变,说明正逆反应速率相等,达到了平衡,b不符合题意;
c.反应物生成物都是气体,质量守恒不变,气体的物质的量不变,故混合气体的平均相对分子质量永远不变,故混合气体的平均相对分子质量不变不一定达到了平衡,c符合题意;
d.反应达到平衡时,单位时间内断裂2个键同时断裂1个,故断裂键与断裂键数目相等时,没有达到了平衡,d符合题意;
答案选acd;
(2)根据题意,设初始的CO的物质的量为amol,转化了xmol,可得$\\begin{array}{cccccccc}& \\text{CO}& \\text{+}& {\\text{H}}_{\\text{2}}\\text{S}& \\stackrel{}{⇌}& \\text{COS}& \\text{+}& {\\text{H}}_{\\text{2}}\\\\ 开始\\text{/mol}& \\text{a}& & \\text{a}& & \\text{0}& & \\text{0}\\\\ 转化\\text{/mol}& \\text{x}& & \\text{x}& & \\text{x}& & \\text{x}\\\\ 平衡\\text{/mol}& \\text{a-x}& & \\text{a-x}& & \\text{x}& & \\text{x}\\end{array}$
测得反应前容器内压强为,10min达到平衡时的分压为,则P0=P1
①CO的平衡转化率为×100%=
②该反应的平衡常数=
(3)反应达平衡后,温度升高,的转化率降低,升温平衡逆向移动,故正反应方向为放热反应。
(4)已知:
a.
b.
c.根据盖斯定律(b-c)/2+a即得到CaO(s)与SO2(g)反应生成CaSO3(s)的热化学方程式-402kJ/mol;
(5)b电极为H2O放电生成O2与H+,稀硫酸进入生成了浓硫酸,故电解池中膜c为阳离子交换膜;阴极得到电子发生还原反应,根据图可知是HSO在酸性条件下发生还原反应,生成S2O,其电极反应式为;根据图示,吸收池中S2O和NO是反应物,N2和HSO是生成物,则吸收池中除去NO的原理是2NO+2S2O+2H2O=N2+4HSO,标准状况下2.24LNO即0.1molNO时,需要0.1molS2O,则转移0.2mol电子,根据反应2SO2+O2=2SO3,阳极吸收0.1molSO2,质量增加为0.1mol×64g/mol=6.4g,通过阳离子交换膜的H+为0.2mol,质量减少0.2mol×1g/mol=0.2g,阳极区溶液质量变化量为6.4g-0.2g=6.2g。
"} ] for one_items in items_res_to_xbk: keys_items = ["stem", "key", "parse", "analysis", "options"] # if one_items['img_status'] == 1 and ("stem_img" in one_items and one_items["stem_img"].strip()): # keys_items = ["stem_img", "key_img", "parse_img", "options_img"] for k in keys_items: if k in one_items: if k == "options": one_items[k] = list(map(sub2, one_items[k])) else: one_items[k] = sub2(one_items[k]) # pprint(items_res_to_xbk[0]) # ^(\s*\s*)+?(参考|考试|试[题卷]|物理|理综|数学|化学|生物)(答案|解析|答案[及与和]评分(标准|意见|细则))\s*$' # r'|^(\s*\s*)+?评分标准' print(99999999999999) # ss1 = r"第Ⅱ卷非选择题,共分" # ss = "第Ⅱ卷非选择题,共分" # if re.search(r'^(\s*\s*)+?(?=errr)',ss1): # print(222222222222222222) bb = """ 一列简谐横波沿直线传播, 该直线上的 a、b 两点相距 4.42 m. 图中实、虚两条曲线分 别表示平衡位置在 a、b 两点处质点的振动曲线.从图示可知( ) A.此列波的频率一定是 10Hz B.此列波的波长一定是 0.1m C.此列波的传播速度可能是 34 m/s D .a 点一定比b 点距波源近 第Ⅱ卷 (非选择题,共 52 分) 【未识别图片】 """ # end_pic = re.findall(r"\n(\s*" # r"()*?)\n?$", # bb) # # print(end_pic) print(chr(ord('@')+1)) option_con = """ 一列简谐横波沿直线传播, 该直线上的 a、b 两点相距 4.42 m. 图中实、虚两条曲线分 别表示平衡位置在 a、b 两点处质点的振动曲线.从图示可知( ) A.此列波的频率一定是 10Hz B.此列波的波长一定是 0.1m C.此列波的传播速度可能是 34 m/s D .a 点一定比b 点距波源近 第Ⅱ卷 (非选择题,共 52 分) 【未识别图片】 """ # option_con = re.sub(r"(\n\s*(\s*)+?\s*)(A[、、..::].+?)", # r"\1\n\3", str(option_con),flags=re.S) # print(option_con) pkk = "二、(每小题有4个选项)" pkk = re.sub(r'([一二三四五六七八九十])\s*[、..、,,::]?\s*([((]\s*(每小题|本大?题)((?!选项).)+?[))]|综合题)', r"\1" + "、" + "解答题", pkk) print(pkk) # callback_url = "http://zsyte.zhixinhuixue.com/parseapi/index/sid/2510/wid/190969" # fp = open(r"E:\Text_Structure\res_folder\6290b90df84c0e279ac64824__2022_05_30_09_35_33.json", 'r',encoding='utf-8').read() # res_xbk = json.loads(fp) # # print(res_xbk) # r = requests.post(callback_url, # # json=res, # 可以,但是会进行转义 # data=json.dumps(res_xbk, ensure_ascii=False).encode("utf-8"), # 文件开头有编码显示 # ) # print(r.status_code,r.text) chachong_item_dict = {'topic_id': 3, 'subject_id': 41, 'topic_type_id': 20, 'content': '下列各组数中,能作为直角三角形边长的是( )', 'options': ['$4$,$5$,$6$', '$12$,$16$,$20$', '$5$,$10$,$13$', '$8$,$40$,$41$']} chachong_item_dict1 = {'topic_id': 2, 'subject_id': 41, 'topic_type_id': 20, 'content': '点$A\\left(-3,4\\right)$所在象限为( )', 'options': ['第一象限', '第二象限', '第三象限', '第四象限']} chachong_item_dict2 = {'topic_id': 2, 'subject_id': 41, 'topic_type_id': 20, 'content': '

所在象限为( )

', 'options': ['

第一象限

', '

第二象限

', '

第三象限第四象限

']} chachong_item_dict3 = {'topic_id': 2, 'subject_id': 41, 'topic_type_id': 20, 'content': '点所在象限为( )', 'options': ['第一象限', '第二象限', '第三象限', '第四象限']} import configs # repeat_ip = "http://82.156.68.22:8888/api/repeat/subject" 保存入库查重 repeat_ip = "http://82.156.68.22:8888/repeat/subject" # 全学科查重 # repeat_r = requests.post(url=configs.repeat_ip, json={"topics":[chachong_item_dict2], # "callback":"http://192.168.1.140:8888/kk"}) # repeat_r = requests.post(url=configs.repeat_ip, json=[chachong_item_dict1]) # print(repeat_r.content) import os print(os.environ.get('APPDATA')) # repeat_r = requests.post(url=configs.repeat_ip, json=[chachong_item_dict]).json() # print(repeat_r)