Fix: resolve model_id to model before judge parse method (#17493)

This commit is contained in:
Lynn
2026-07-29 09:34:52 +08:00
committed by GitHub
parent 75836cfc10
commit 8d1eff6ea2
11 changed files with 91 additions and 8 deletions

View File

@@ -21,6 +21,7 @@ from io import BytesIO
from deepdoc.parser.utils import get_text
from rag.app import naive
from rag.app.naive import by_plaintext, PARSERS
from api.db.joint_services.tenant_model_service import get_composite_model_name_by_id
from common.constants import MAXIMUM_PAGE_NUMBER
from common.parser_config_utils import normalize_layout_recognizer
from rag.nlp import bullets_category, is_english, remove_contents_table, hierarchical_merge, make_colon_as_title, naive_merge, random_choices, tokenize_table, tokenize_chunks, attach_media_context
@@ -91,7 +92,14 @@ def chunk(filename, binary=None, from_page=0, to_page=MAXIMUM_PAGE_NUMBER, lang=
callback(0.8, "Finish parsing.")
elif re.search(r"\.pdf$", filename, re.IGNORECASE):
layout_recognizer, parser_model_name = normalize_layout_recognizer(parser_config.get("layout_recognize", "DeepDOC"))
layout_recognize_raw = parser_config.get("layout_recognize", "DeepDOC")
tenant_id = kwargs.get("tenant_id")
if tenant_id and isinstance(layout_recognize_raw, str):
try:
layout_recognize_raw = get_composite_model_name_by_id(layout_recognize_raw)
except LookupError:
pass
layout_recognizer, parser_model_name = normalize_layout_recognizer(layout_recognize_raw)
if isinstance(layout_recognizer, bool):
layout_recognizer = "DeepDOC" if layout_recognizer else "Plain Text"

View File

@@ -27,6 +27,7 @@ from deepdoc.parser.utils import get_text
from rag.nlp import bullets_category, remove_contents_table, make_colon_as_title, tokenize_chunks, docx_question_level, tree_merge
from rag.nlp import rag_tokenizer, Node
from deepdoc.parser import PdfParser, DocxParser, HtmlParser
from api.db.joint_services.tenant_model_service import get_composite_model_name_by_id
from rag.app.naive import by_plaintext, PARSERS
from common.parser_config_utils import normalize_layout_recognizer
@@ -183,7 +184,14 @@ def chunk(filename, binary=None, from_page=0, to_page=MAXIMUM_PAGE_NUMBER, lang=
return tokenize_chunks(chunks, doc, eng, None, language=lang)
elif re.search(r"\.pdf$", filename, re.IGNORECASE):
layout_recognizer, parser_model_name = normalize_layout_recognizer(parser_config.get("layout_recognize", "DeepDOC"))
layout_recognize_raw = parser_config.get("layout_recognize", "DeepDOC")
tenant_id = kwargs.get("tenant_id")
if tenant_id and isinstance(layout_recognize_raw, str):
try:
layout_recognize_raw = get_composite_model_name_by_id(layout_recognize_raw)
except LookupError:
pass
layout_recognizer, parser_model_name = normalize_layout_recognizer(layout_recognize_raw)
if isinstance(layout_recognizer, bool):
layout_recognizer = "DeepDOC" if layout_recognizer else "Plain Text"

View File

@@ -26,6 +26,7 @@ from common.token_utils import num_tokens_from_string
from deepdoc.parser import PdfParser, DocxParser
from deepdoc.parser.figure_parser import vision_figure_parser_pdf_wrapper, vision_figure_parser_docx_wrapper
from docx import Document
from api.db.joint_services.tenant_model_service import get_composite_model_name_by_id
from rag.app.naive import by_plaintext, PARSERS
from common.parser_config_utils import normalize_layout_recognizer
@@ -146,7 +147,14 @@ def chunk(filename, binary=None, from_page=0, to_page=MAXIMUM_PAGE_NUMBER, lang=
# is it English
eng = lang.lower() == "english" # pdf_parser.is_english
if re.search(r"\.pdf$", filename, re.IGNORECASE):
layout_recognizer, parser_model_name = normalize_layout_recognizer(parser_config.get("layout_recognize", "DeepDOC"))
layout_recognize_raw = parser_config.get("layout_recognize", "DeepDOC")
tenant_id = kwargs.get("tenant_id")
if tenant_id and isinstance(layout_recognize_raw, str):
try:
layout_recognize_raw = get_composite_model_name_by_id(layout_recognize_raw)
except LookupError:
pass
layout_recognizer, parser_model_name = normalize_layout_recognizer(layout_recognize_raw)
if isinstance(layout_recognizer, bool):
layout_recognizer = "DeepDOC" if layout_recognizer else "Plain Text"

View File

@@ -35,6 +35,7 @@ from api.db.joint_services.tenant_model_service import (
ensure_mineru_from_env,
ensure_opendataloader_from_env,
ensure_paddleocr_from_env,
get_composite_model_name_by_id,
get_first_provider_model_name,
resolve_model_config,
get_tenant_default_model_by_type,
@@ -1038,7 +1039,14 @@ def chunk(filename, binary=None, from_page=0, to_page=MAXIMUM_PAGE_NUMBER, lang=
return res
elif re.search(r"\.pdf$", filename, re.IGNORECASE):
layout_recognizer, parser_model_name = normalize_layout_recognizer(parser_config.get("layout_recognize", "DeepDOC"))
layout_recognize_raw = parser_config.get("layout_recognize", "DeepDOC")
tenant_id = kwargs.get("tenant_id")
if tenant_id and isinstance(layout_recognize_raw, str):
try:
layout_recognize_raw = get_composite_model_name_by_id(layout_recognize_raw)
except LookupError:
pass
layout_recognizer, parser_model_name = normalize_layout_recognizer(layout_recognize_raw)
opendataloader_llm_name = kwargs.pop("opendataloader_llm_name", None)
if layout_recognizer == "OpenDataLoader" and parser_model_name:
opendataloader_llm_name = parser_model_name

View File

@@ -24,6 +24,7 @@ from rag.nlp import rag_tokenizer, tokenize
from deepdoc.parser import PdfParser, ExcelParser, HtmlParser
from deepdoc.parser.figure_parser import vision_figure_parser_docx_wrapper_naive
from rag.app.naive import by_plaintext, PARSERS
from api.db.joint_services.tenant_model_service import get_composite_model_name_by_id
from common.constants import MAXIMUM_PAGE_NUMBER, MAXIMUM_TASK_PAGE_NUMBER
from common.parser_config_utils import normalize_layout_recognizer
@@ -87,7 +88,14 @@ def chunk(filename, binary=None, from_page=0, to_page=MAXIMUM_PAGE_NUMBER, lang=
callback(0.8, "Finish parsing.")
elif re.search(r"\.pdf$", filename, re.IGNORECASE):
layout_recognizer, parser_model_name = normalize_layout_recognizer(parser_config.get("layout_recognize", "DeepDOC"))
layout_recognize_raw = parser_config.get("layout_recognize", "DeepDOC")
tenant_id = kwargs.get("tenant_id")
if tenant_id and isinstance(layout_recognize_raw, str):
try:
layout_recognize_raw = get_composite_model_name_by_id(layout_recognize_raw)
except LookupError:
pass
layout_recognizer, parser_model_name = normalize_layout_recognizer(layout_recognize_raw)
if isinstance(layout_recognizer, bool):
layout_recognizer = "DeepDOC" if layout_recognizer else "Plain Text"

View File

@@ -23,6 +23,7 @@ from common.constants import ParserType, MAXIMUM_PAGE_NUMBER
from rag.nlp import rag_tokenizer, tokenize, tokenize_table, add_positions, bullets_category, title_frequency, tokenize_chunks, attach_media_context
from deepdoc.parser import PdfParser
import numpy as np
from api.db.joint_services.tenant_model_service import get_composite_model_name_by_id
from rag.app.naive import by_plaintext, PARSERS
from common.parser_config_utils import normalize_layout_recognizer
@@ -138,7 +139,14 @@ def chunk(filename, binary=None, from_page=0, to_page=MAXIMUM_PAGE_NUMBER, lang=
"""
parser_config = kwargs.get("parser_config", {"chunk_token_num": 512, "delimiter": "\n!?。;!?", "layout_recognize": "DeepDOC"})
if re.search(r"\.pdf$", filename, re.IGNORECASE):
layout_recognizer, parser_model_name = normalize_layout_recognizer(parser_config.get("layout_recognize", "DeepDOC"))
layout_recognize_raw = parser_config.get("layout_recognize", "DeepDOC")
tenant_id = kwargs.get("tenant_id")
if tenant_id and isinstance(layout_recognize_raw, str):
try:
layout_recognize_raw = get_composite_model_name_by_id(layout_recognize_raw)
except LookupError:
pass
layout_recognizer, parser_model_name = normalize_layout_recognizer(layout_recognize_raw)
if isinstance(layout_recognizer, bool):
layout_recognizer = "DeepDOC" if layout_recognizer else "Plain Text"

View File

@@ -25,7 +25,7 @@ import numpy as np
from PIL import Image
from api.db.services.llm_service import LLMBundle
from api.db.joint_services.tenant_model_service import get_tenant_default_model_by_type, get_first_provider_model_name, resolve_model_config, ensure_paddleocr_from_env
from api.db.joint_services.tenant_model_service import get_composite_model_name_by_id, get_tenant_default_model_by_type, get_first_provider_model_name, resolve_model_config, ensure_paddleocr_from_env
from common.constants import LLMType
from common.parser_config_utils import normalize_layout_recognizer
from common.string_utils import clean_markdown_block
@@ -111,6 +111,11 @@ def _try_paddleocr_image(filename, binary, tenant_id, parser_config, callback):
if not layout_recognize:
return ""
if tenant_id and isinstance(layout_recognize, str):
try:
layout_recognize = get_composite_model_name_by_id(layout_recognize)
except LookupError:
pass
layout_recognizer, parser_model_name = normalize_layout_recognizer(layout_recognize)
if layout_recognizer != "PaddleOCR":
return ""

View File

@@ -25,6 +25,7 @@ from pypdf import PdfReader as pdf2_read
from deepdoc.parser import PdfParser, PlainParser
from deepdoc.parser.ppt_parser import RAGFlowPptParser
from rag.app.naive import by_plaintext, PARSERS
from api.db.joint_services.tenant_model_service import get_composite_model_name_by_id
from common.constants import MAXIMUM_PAGE_NUMBER
from common.parser_config_utils import normalize_layout_recognizer
from rag.nlp import rag_tokenizer
@@ -195,7 +196,14 @@ def chunk(filename, binary=None, from_page=0, to_page=MAXIMUM_PAGE_NUMBER, lang=
logging.warning(error_msg)
raise NotImplementedError(error_msg)
elif re.search(r"\.pdf$", filename, re.IGNORECASE):
layout_recognizer, parser_model_name = normalize_layout_recognizer(parser_config.get("layout_recognize", "DeepDOC"))
layout_recognize_raw = parser_config.get("layout_recognize", "DeepDOC")
tenant_id = kwargs.get("tenant_id")
if tenant_id and isinstance(layout_recognize_raw, str):
try:
layout_recognize_raw = get_composite_model_name_by_id(layout_recognize_raw)
except LookupError:
pass
layout_recognizer, parser_model_name = normalize_layout_recognizer(layout_recognize_raw)
if isinstance(layout_recognizer, bool):
layout_recognizer = "DeepDOC" if layout_recognizer else "Plain Text"