diff --git a/dsLightRag/Routes/RecognizeEduQuestion.py b/dsLightRag/Routes/RecognizeEduQuestion.py new file mode 100644 index 00000000..38775db4 --- /dev/null +++ b/dsLightRag/Routes/RecognizeEduQuestion.py @@ -0,0 +1,70 @@ +import logging + +from fastapi import APIRouter, Request, HTTPException + +from Util.FormulaRecognizer import FormulaRecognizer +from Util.ShiTiRecognizer import ShiTiRecognizer + +# 创建路由路由器 +router = APIRouter(prefix="/api", tags=["教育场景识别"]) + +# 配置日志 +logger = logging.getLogger(__name__) + +@router.post("/recognize-formula") +async def recognize_formula(request: Request): + """ + 公式识别接口 + 参数: + image_url: 图片URL + 返回: + JSON响应,包含公式识别结果 + """ + try: + # 获取请求参数 + data = await request.json() + image_url = data.get("image_url") + + # 验证参数 + if not image_url: + raise HTTPException(status_code=400, detail="缺少必要参数: image_url") + + # 调用公式识别器 + recognizer = FormulaRecognizer() + result = recognizer.recognize_formula(image_url) + + return result + except HTTPException as e: + raise e + except Exception as e: + logger.error(f"公式识别接口异常: {str(e)}") + raise HTTPException(status_code=500, detail=f"服务器内部错误: {str(e)}") + +@router.post("/recognize-question") +async def recognize_question(request: Request): + """ + 试题识别接口 + 参数: + image_url: 图片URL + 返回: + JSON响应,包含试题识别结果 + """ + try: + # 获取请求参数 + data = await request.json() + image_url = data.get("image_url") + + # 验证参数 + if not image_url: + raise HTTPException(status_code=400, detail="缺少必要参数: image_url") + + # 调用试题识别器 + recognizer = ShiTiRecognizer() + result = recognizer.recognize_question(image_url) + + return result + except HTTPException as e: + raise e + except Exception as e: + logger.error(f"试题识别接口异常: {str(e)}") + raise HTTPException(status_code=500, detail=f"服务器内部错误: {str(e)}") \ No newline at end of file diff --git a/dsLightRag/Routes/__pycache__/RecognizeEduQuestion.cpython-310.pyc b/dsLightRag/Routes/__pycache__/RecognizeEduQuestion.cpython-310.pyc new file mode 100644 index 00000000..3c253b5a Binary files /dev/null and b/dsLightRag/Routes/__pycache__/RecognizeEduQuestion.cpython-310.pyc differ diff --git a/dsLightRag/Start.py b/dsLightRag/Start.py index 183caef3..71532839 100644 --- a/dsLightRag/Start.py +++ b/dsLightRag/Start.py @@ -1,33 +1,32 @@ -import uvicorn import asyncio -from fastapi import FastAPI -from starlette.staticfiles import StaticFiles -from fastapi.middleware.cors import CORSMiddleware # 添加此导入 +import logging # 添加此导入 +from contextlib import asynccontextmanager -from Routes.TeachingModel.tasks.BackgroundTasks import train_document_task -from Util.PostgreSQLUtil import init_postgres_pool, close_postgres_pool +import uvicorn +from fastapi import FastAPI +from fastapi.middleware.cors import CORSMiddleware # 添加此导入 +from starlette.staticfiles import StaticFiles from Routes.Ggb import router as ggb_router -from Routes.Knowledge import router as knowledge_router -from Routes.Oss import router as oss_router -from Routes.Rag import router as rag_router -from Routes.ZuoWen import router as zuowen_router -from Routes.Llm import router as llm_router -from Routes.TeachingModel.api.LoginController import router as login_router -from Routes.TeachingModel.api.UserController import router as user_router -from Routes.TeachingModel.api.DmController import router as dm_router -from Routes.TeachingModel.api.ThemeController import router as theme_router -from Routes.TeachingModel.api.DocumentController import router as document_router -from Routes.TeachingModel.api.TeachingModelController import router as teaching_model_router -from Routes.QA import router as qa_router from Routes.JiMengRoute import router as jimeng_router -from Routes.SunoRoute import router as suno_router -from Routes.XueBanRoute import router as xueban_router +from Routes.Knowledge import router as knowledge_router +from Routes.Llm import router as llm_router from Routes.MjRoute import router as mj_router +from Routes.Oss import router as oss_router +from Routes.QA import router as qa_router from Routes.QWenImageRoute import router as qwen_image_router -from Util.LightRagUtil import * -from contextlib import asynccontextmanager -import logging # 添加此导入 +from Routes.Rag import router as rag_router +from Routes.SunoRoute import router as suno_router +from Routes.TeachingModel.api.DmController import router as dm_router +from Routes.TeachingModel.api.DocumentController import router as document_router +from Routes.TeachingModel.api.LoginController import router as login_router +from Routes.TeachingModel.api.TeachingModelController import router as teaching_model_router +from Routes.TeachingModel.api.ThemeController import router as theme_router +from Routes.TeachingModel.api.UserController import router as user_router +from Routes.TeachingModel.tasks.BackgroundTasks import train_document_task +from Routes.XueBanRoute import router as xueban_router +from Routes.ZuoWen import router as zuowen_router +from Routes.RecognizeEduQuestion import router as ocr_router # 控制日志输出 logger = logging.getLogger('lightrag') @@ -39,8 +38,8 @@ logger.addHandler(handler) @asynccontextmanager async def lifespan(_: FastAPI): - #pool = await init_postgres_pool() - #app.state.pool = pool + # pool = await init_postgres_pool() + # app.state.pool = pool asyncio.create_task(train_document_task()) @@ -48,7 +47,7 @@ async def lifespan(_: FastAPI): yield finally: # 应用关闭时销毁连接池 - #await close_postgres_pool(pool) + # await close_postgres_pool(pool) pass @@ -78,8 +77,8 @@ app.include_router(jimeng_router) # 即梦路由 app.include_router(suno_router) # Suno路由 app.include_router(xueban_router) # 学伴路由 app.include_router(mj_router) # Midjourney路由 -app.include_router(qwen_image_router) # Qwen Image 路由 - +app.include_router(qwen_image_router) # Qwen Image 路由 +app.include_router(ocr_router) # 教育场景识别 # Teaching Model 相关路由 # 登录相关(不用登录) diff --git a/dsLightRag/Util/ShiTiRecognizer.py b/dsLightRag/Util/ShiTiRecognizer.py index 22d70cdd..6c8e5ff0 100644 --- a/dsLightRag/Util/ShiTiRecognizer.py +++ b/dsLightRag/Util/ShiTiRecognizer.py @@ -88,6 +88,7 @@ class ShiTiRecognizer: response = self.client.recognize_edu_question_ocr_with_options(request, runtime) result = self._parse_response(response) logger.info("试题识别成功") + print( result) return result except Exception as error: logger.error(f"试题识别失败: {str(error)}") diff --git a/dsLightRag/Util/__pycache__/FormulaRecognizer.cpython-310.pyc b/dsLightRag/Util/__pycache__/FormulaRecognizer.cpython-310.pyc new file mode 100644 index 00000000..811a3421 Binary files /dev/null and b/dsLightRag/Util/__pycache__/FormulaRecognizer.cpython-310.pyc differ diff --git a/dsLightRag/Util/__pycache__/ShiTiRecognizer.cpython-310.pyc b/dsLightRag/Util/__pycache__/ShiTiRecognizer.cpython-310.pyc new file mode 100644 index 00000000..fea2efaf Binary files /dev/null and b/dsLightRag/Util/__pycache__/ShiTiRecognizer.cpython-310.pyc differ diff --git a/dsLightRag/static/RecognizeEduQuestionOcr.html b/dsLightRag/static/RecognizeEduQuestionOcr.html new file mode 100644 index 00000000..6fab9f36 --- /dev/null +++ b/dsLightRag/static/RecognizeEduQuestionOcr.html @@ -0,0 +1,461 @@ + + + + + + 教育场景识别 + + + + + + + + +
+

教育场景识别

+ +
+ + +
+ + +
+
+

示例公式图片

+
+
+ 公式示例1 +
数学公式示例
+
+
+
+ +
+

公式识别

+
+
+ + +
+
+
识别结果将在此处显示
+
+
+
+
+ + +
+
+

示例试题图片

+
+
+ 试题示例1 +
试题示例
+
+
+
+ +
+

试题识别

+
+
+ + +
+
+
识别结果将在此处显示
+
+
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/dsLightRag/static/ShiTi.json b/dsLightRag/static/ShiTi.json new file mode 100644 index 00000000..b0a85998 --- /dev/null +++ b/dsLightRag/static/ShiTi.json @@ -0,0 +1,2186 @@ +{ + "Data": { + "algo_version": "", + "content": "9.对于任意实数a,下列各式一定成立的是 () A . \\sqrt { a ^ { 2 } - 1 } = \\sqrt { a - 1 } \\cdot \\sqrt { a + 1 } B . \\sqrt { \\left ( a + 6 \\right ) ^ { 2 } } = a + 6 C . \\sqrt { - 1 6 \\cdot \\left ( - a \\right ) } = - 4 \\sqrt { - a } D . \\sqrt { 2 5 a ^ { 4 } } = 5 a ^ { 2 } ", + "figure": [], + "height": 270, + "orgHeight": 270, + "orgWidth": 922, + "prism_version": "1.0.9", + "prism_wnum": 6, + "prism_wordsInfo": [ + { + "angle": -89, + "charInfo": [ + { + "h": 25, + "prob": 99, + "w": 13, + "word": "9", + "x": 14, + "y": 16 + }, + { + "h": 25, + "prob": 99, + "w": 6, + "word": ".", + "x": 29, + "y": 16 + }, + { + "h": 25, + "prob": 99, + "w": 13, + "word": "对", + "x": 44, + "y": 16 + }, + { + "h": 25, + "prob": 99, + "w": 24, + "word": "于", + "x": 73, + "y": 16 + }, + { + "h": 25, + "prob": 99, + "w": 25, + "word": "任", + "x": 102, + "y": 16 + }, + { + "h": 25, + "prob": 99, + "w": 24, + "word": "意", + "x": 133, + "y": 16 + }, + { + "h": 25, + "prob": 99, + "w": 25, + "word": "实", + "x": 161, + "y": 16 + }, + { + "h": 25, + "prob": 99, + "w": 22, + "word": "数", + "x": 191, + "y": 16 + }, + { + "h": 25, + "prob": 99, + "w": 14, + "word": "a", + "x": 226, + "y": 16 + }, + { + "h": 25, + "prob": 99, + "w": 7, + "word": ",", + "x": 245, + "y": 16 + }, + { + "h": 25, + "prob": 99, + "w": 23, + "word": "下", + "x": 256, + "y": 16 + }, + { + "h": 25, + "prob": 99, + "w": 23, + "word": "列", + "x": 286, + "y": 16 + }, + { + "h": 25, + "prob": 99, + "w": 23, + "word": "各", + "x": 315, + "y": 16 + }, + { + "h": 25, + "prob": 99, + "w": 23, + "word": "式", + "x": 344, + "y": 16 + }, + { + "h": 25, + "prob": 99, + "w": 23, + "word": "一", + "x": 373, + "y": 16 + }, + { + "h": 25, + "prob": 99, + "w": 24, + "word": "定", + "x": 402, + "y": 16 + }, + { + "h": 25, + "prob": 99, + "w": 23, + "word": "成", + "x": 433, + "y": 16 + }, + { + "h": 25, + "prob": 99, + "w": 23, + "word": "立", + "x": 462, + "y": 16 + }, + { + "h": 25, + "prob": 99, + "w": 23, + "word": "的", + "x": 493, + "y": 16 + }, + { + "h": 25, + "prob": 99, + "w": 24, + "word": "是", + "x": 520, + "y": 16 + } + ], + "direction": 0, + "height": 538, + "pos": [ + { + "x": 14, + "y": 16 + }, + { + "x": 552, + "y": 16 + }, + { + "x": 552, + "y": 40 + }, + { + "x": 14, + "y": 40 + } + ], + "prob": 99, + "recClassify": 0, + "width": 24, + "word": "9.对于任意实数a,下列各式一定成立的是", + "x": 271, + "y": -240 + }, + { + "angle": 0, + "charInfo": [ + { + "h": 23, + "prob": 99, + "w": 10, + "word": "(", + "x": 789, + "y": 15 + }, + { + "h": 23, + "prob": 99, + "w": 9, + "word": ")", + "x": 879, + "y": 15 + } + ], + "direction": 0, + "height": 22, + "pos": [ + { + "x": 786, + "y": 15 + }, + { + "x": 888, + "y": 15 + }, + { + "x": 888, + "y": 37 + }, + { + "x": 786, + "y": 37 + } + ], + "prob": 99, + "recClassify": 0, + "width": 101, + "word": "()", + "x": 786, + "y": 15 + }, + { + "angle": 0, + "charInfo": [ + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 42, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 47, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 52, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 57, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 62, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 67, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 72, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 77, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 82, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 87, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 92, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 97, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 102, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 107, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 112, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 117, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 122, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 127, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 132, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 137, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 142, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 147, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 152, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 157, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 162, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 167, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 172, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 177, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 182, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 187, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 192, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 197, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 202, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 207, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 212, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 217, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 222, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 227, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 232, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 237, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 242, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 247, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 252, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 257, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 262, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 267, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 272, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 277, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 282, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 287, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 292, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 297, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 302, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 307, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 312, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 317, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 322, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 327, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 332, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 337, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 342, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 347, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 352, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 357, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 362, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 367, + "y": 57 + }, + { + "h": 40, + "prob": 99, + "w": 5, + "word": "", + "x": 372, + "y": 57 + } + ], + "direction": 0, + "height": 39, + "pos": [ + { + "x": 42, + "y": 57 + }, + { + "x": 416, + "y": 57 + }, + { + "x": 416, + "y": 96 + }, + { + "x": 42, + "y": 96 + } + ], + "prob": 99, + "recClassify": 51, + "width": 373, + "word": "A . \\sqrt { a ^ { 2 } - 1 } = \\sqrt { a - 1 } \\cdot \\sqrt { a + 1 }", + "x": 42, + "y": 57 + }, + { + "angle": 0, + "charInfo": [ + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 42, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 46, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 50, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 54, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 58, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 62, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 66, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 70, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 74, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 78, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 82, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 86, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 90, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 94, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 98, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 102, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 106, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 110, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 114, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 118, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 122, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 126, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 130, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 134, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 138, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 142, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 146, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 150, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 154, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 158, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 162, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 166, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 170, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 174, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 178, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 182, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 186, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 190, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 194, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 198, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 202, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 206, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 210, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 214, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 218, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 222, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 226, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 230, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 234, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 238, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 242, + "y": 109 + }, + { + "h": 43, + "prob": 98, + "w": 4, + "word": "", + "x": 246, + "y": 109 + } + ], + "direction": 0, + "height": 41, + "pos": [ + { + "x": 42, + "y": 110 + }, + { + "x": 296, + "y": 109 + }, + { + "x": 296, + "y": 150 + }, + { + "x": 42, + "y": 151 + } + ], + "prob": 98, + "recClassify": 51, + "width": 253, + "word": "B . \\sqrt { \\left ( a + 6 \\right ) ^ { 2 } } = a + 6", + "x": 42, + "y": 109 + }, + { + "angle": 0, + "charInfo": [ + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 42, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 47, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 52, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 57, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 62, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 67, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 72, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 77, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 82, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 87, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 92, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 97, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 102, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 107, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 112, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 117, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 122, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 127, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 132, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 137, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 142, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 147, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 152, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 157, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 162, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 167, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 172, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 177, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 182, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 187, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 192, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 197, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 202, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 207, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 212, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 217, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 222, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 227, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 232, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 237, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 242, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 247, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 252, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 257, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 262, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 267, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 272, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 277, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 282, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 287, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 292, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 297, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 302, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 307, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 312, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 317, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 322, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 327, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 332, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 337, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 342, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 347, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 352, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 357, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 362, + "y": 159 + }, + { + "h": 43, + "prob": 98, + "w": 5, + "word": "", + "x": 367, + "y": 159 + } + ], + "direction": 0, + "height": 41, + "pos": [ + { + "x": 42, + "y": 160 + }, + { + "x": 425, + "y": 157 + }, + { + "x": 425, + "y": 199 + }, + { + "x": 42, + "y": 202 + } + ], + "prob": 98, + "recClassify": 51, + "width": 382, + "word": "C . \\sqrt { - 1 6 \\cdot \\left ( - a \\right ) } = - 4 \\sqrt { - a }", + "x": 42, + "y": 159 + }, + { + "angle": -89, + "charInfo": [ + { + "h": 37, + "prob": 99, + "w": 4, + "word": "", + "x": 42, + "y": 214 + }, + { + "h": 37, + "prob": 99, + "w": 4, + "word": "", + "x": 46, + "y": 214 + }, + { + "h": 37, + "prob": 99, + "w": 4, + "word": "", + "x": 50, + "y": 214 + }, + { + "h": 37, + "prob": 99, + "w": 4, + "word": "", + "x": 54, + "y": 214 + }, + { + "h": 37, + "prob": 99, + "w": 4, + "word": "", + "x": 58, + "y": 214 + }, + { + "h": 37, + "prob": 99, + "w": 4, + "word": "", + "x": 62, + "y": 214 + }, + { + "h": 37, + "prob": 99, + "w": 4, + "word": "", + "x": 66, + "y": 214 + }, + { + "h": 37, + "prob": 99, + "w": 4, + "word": "", + "x": 70, + "y": 214 + }, + { + "h": 37, + "prob": 99, + "w": 4, + "word": "", + "x": 74, + "y": 214 + }, + { + "h": 37, + "prob": 99, + "w": 4, + "word": "", + "x": 78, + "y": 214 + }, + { + "h": 37, + "prob": 99, + "w": 4, + "word": "", + "x": 82, + "y": 214 + }, + { + "h": 37, + "prob": 99, + "w": 4, + "word": "", + "x": 86, + "y": 214 + }, + { + "h": 37, + "prob": 99, + "w": 4, + "word": "", + "x": 90, + "y": 214 + }, + { + "h": 37, + "prob": 99, + "w": 4, + "word": "", + "x": 94, + "y": 214 + }, + { + "h": 37, + "prob": 99, + "w": 4, + "word": "", + "x": 98, + "y": 214 + }, + { + "h": 37, + "prob": 99, + "w": 4, + "word": "", + "x": 102, + "y": 214 + }, + { + "h": 37, + "prob": 99, + "w": 4, + "word": "", + "x": 106, + "y": 214 + }, + { + "h": 37, + "prob": 99, + "w": 4, + "word": "", + "x": 110, + "y": 214 + }, + { + "h": 37, + "prob": 99, + "w": 4, + "word": "", + "x": 114, + "y": 214 + }, + { + "h": 37, + "prob": 99, + "w": 4, + "word": "", + "x": 118, + "y": 214 + }, + { + "h": 37, + "prob": 99, + "w": 4, + "word": "", + "x": 122, + "y": 214 + }, + { + "h": 37, + "prob": 99, + "w": 4, + "word": "", + "x": 126, + "y": 214 + }, + { + "h": 37, + "prob": 99, + "w": 4, + "word": "", + "x": 130, + "y": 214 + }, + { + "h": 37, + "prob": 99, + "w": 4, + "word": "", + "x": 134, + "y": 214 + }, + { + "h": 37, + "prob": 99, + "w": 4, + "word": "", + "x": 138, + "y": 214 + }, + { + "h": 37, + "prob": 99, + "w": 4, + "word": "", + "x": 142, + "y": 214 + }, + { + "h": 37, + "prob": 99, + "w": 4, + "word": "", + "x": 146, + "y": 214 + }, + { + "h": 37, + "prob": 99, + "w": 4, + "word": "", + "x": 150, + "y": 214 + }, + { + "h": 37, + "prob": 99, + "w": 4, + "word": "", + "x": 154, + "y": 214 + }, + { + "h": 37, + "prob": 99, + "w": 4, + "word": "", + "x": 158, + "y": 214 + }, + { + "h": 37, + "prob": 99, + "w": 4, + "word": "", + "x": 162, + "y": 214 + }, + { + "h": 37, + "prob": 99, + "w": 4, + "word": "", + "x": 166, + "y": 214 + }, + { + "h": 37, + "prob": 99, + "w": 4, + "word": "", + "x": 170, + "y": 214 + }, + { + "h": 37, + "prob": 99, + "w": 4, + "word": "", + "x": 174, + "y": 214 + }, + { + "h": 37, + "prob": 99, + "w": 4, + "word": "", + "x": 178, + "y": 214 + }, + { + "h": 37, + "prob": 99, + "w": 4, + "word": "", + "x": 182, + "y": 214 + }, + { + "h": 37, + "prob": 99, + "w": 4, + "word": "", + "x": 186, + "y": 214 + }, + { + "h": 37, + "prob": 99, + "w": 4, + "word": "", + "x": 190, + "y": 214 + }, + { + "h": 37, + "prob": 99, + "w": 4, + "word": "", + "x": 194, + "y": 214 + }, + { + "h": 37, + "prob": 99, + "w": 4, + "word": "", + "x": 198, + "y": 214 + }, + { + "h": 37, + "prob": 99, + "w": 4, + "word": "", + "x": 202, + "y": 214 + } + ], + "direction": 0, + "height": 189, + "pos": [ + { + "x": 42, + "y": 214 + }, + { + "x": 232, + "y": 214 + }, + { + "x": 232, + "y": 250 + }, + { + "x": 42, + "y": 250 + } + ], + "prob": 99, + "recClassify": 51, + "width": 35, + "word": "D . \\sqrt { 2 5 a ^ { 4 } } = 5 a ^ { 2 }", + "x": 119, + "y": 137 + } + ], + "width": 922 + }, + "RequestId": "BBA47F6F-DA8B-5D52-9EDE-C81B055B4305" +} \ No newline at end of file