Skip to content

Commit 672958a

Browse files
authored
Fix: model not authorized (#12001)
### What problem does this PR solve? Fix model not authorized. #11973. ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue)
1 parent 3820de9 commit 672958a

File tree

10 files changed

+100
-33
lines changed

10 files changed

+100
-33
lines changed

api/apps/sdk/chat.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,6 @@ async def delete_chats(tenant_id):
252252
continue
253253
temp_dict = {"status": StatusEnum.INVALID.value}
254254
success_count += DialogService.update_by_id(id, temp_dict)
255-
print(success_count, "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$", flush=True)
256255

257256
if errors:
258257
if success_count > 0:

common/parser_config_utils.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#
2+
# Copyright 2025 The InfiniFlow Authors. All Rights Reserved.
3+
#
4+
# Licensed under the Apache License, Version 2.0 (the "License");
5+
# you may not use this file except in compliance with the License.
6+
# You may obtain a copy of the License at
7+
#
8+
# http://www.apache.org/licenses/LICENSE-2.0
9+
#
10+
# Unless required by applicable law or agreed to in writing, software
11+
# distributed under the License is distributed on an "AS IS" BASIS,
12+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
# See the License for the specific language governing permissions and
14+
# limitations under the License.
15+
#
16+
17+
from typing import Any
18+
19+
20+
def normalize_layout_recognizer(layout_recognizer_raw: Any) -> tuple[Any, str | None]:
21+
parser_model_name: str | None = None
22+
layout_recognizer = layout_recognizer_raw
23+
24+
if isinstance(layout_recognizer_raw, str):
25+
lowered = layout_recognizer_raw.lower()
26+
if lowered.endswith("@mineru"):
27+
parser_model_name = layout_recognizer_raw.rsplit("@", 1)[0]
28+
layout_recognizer = "MinerU"
29+
30+
return layout_recognizer, parser_model_name

deepdoc/parser/mineru_parser.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -262,10 +262,8 @@ def _run_mineru_api(
262262
elif self.mineru_server_url:
263263
data["server_url"] = self.mineru_server_url
264264

265-
print("--------------------------------", flush=True)
266-
print(f"{data=}", flush=True)
267-
print(f"{options=}", flush=True)
268-
print("--------------------------------", flush=True)
265+
self.logger.info(f"[MinerU] request {data=}")
266+
self.logger.info(f"[MinerU] request {options=}")
269267

270268
headers = {"Accept": "application/json"}
271269
try:

rag/app/book.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
from deepdoc.parser.utils import get_text
2222
from rag.app import naive
2323
from rag.app.naive import by_plaintext, PARSERS
24+
from common.parser_config_utils import normalize_layout_recognizer
2425
from rag.nlp import bullets_category, is_english,remove_contents_table, \
2526
hierarchical_merge, make_colon_as_title, naive_merge, random_choices, tokenize_table, \
2627
tokenize_chunks, attach_media_context
@@ -96,7 +97,9 @@ def chunk(filename, binary=None, from_page=0, to_page=100000,
9697
callback(0.8, "Finish parsing.")
9798

9899
elif re.search(r"\.pdf$", filename, re.IGNORECASE):
99-
layout_recognizer = parser_config.get("layout_recognize", "DeepDOC")
100+
layout_recognizer, parser_model_name = normalize_layout_recognizer(
101+
parser_config.get("layout_recognize", "DeepDOC")
102+
)
100103

101104
if isinstance(layout_recognizer, bool):
102105
layout_recognizer = "DeepDOC" if layout_recognizer else "Plain Text"
@@ -114,6 +117,7 @@ def chunk(filename, binary=None, from_page=0, to_page=100000,
114117
callback = callback,
115118
pdf_cls = Pdf,
116119
layout_recognizer = layout_recognizer,
120+
mineru_llm_name=parser_model_name,
117121
**kwargs
118122
)
119123

rag/app/laws.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
from rag.nlp import rag_tokenizer, Node
2727
from deepdoc.parser import PdfParser, DocxParser, HtmlParser
2828
from rag.app.naive import by_plaintext, PARSERS
29+
from common.parser_config_utils import normalize_layout_recognizer
2930

3031

3132

@@ -155,7 +156,9 @@ def chunk(filename, binary=None, from_page=0, to_page=100000,
155156
return tokenize_chunks(chunks, doc, eng, None)
156157

157158
elif re.search(r"\.pdf$", filename, re.IGNORECASE):
158-
layout_recognizer = parser_config.get("layout_recognize", "DeepDOC")
159+
layout_recognizer, parser_model_name = normalize_layout_recognizer(
160+
parser_config.get("layout_recognize", "DeepDOC")
161+
)
159162

160163
if isinstance(layout_recognizer, bool):
161164
layout_recognizer = "DeepDOC" if layout_recognizer else "Plain Text"
@@ -173,6 +176,7 @@ def chunk(filename, binary=None, from_page=0, to_page=100000,
173176
callback = callback,
174177
pdf_cls = Pdf,
175178
layout_recognizer = layout_recognizer,
179+
mineru_llm_name=parser_model_name,
176180
**kwargs
177181
)
178182

rag/app/manual.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
from docx import Document
2828
from PIL import Image
2929
from rag.app.naive import by_plaintext, PARSERS
30+
from common.parser_config_utils import normalize_layout_recognizer
3031

3132
class Pdf(PdfParser):
3233
def __init__(self):
@@ -196,7 +197,9 @@ def chunk(filename, binary=None, from_page=0, to_page=100000,
196197
# is it English
197198
eng = lang.lower() == "english" # pdf_parser.is_english
198199
if re.search(r"\.pdf$", filename, re.IGNORECASE):
199-
layout_recognizer = parser_config.get("layout_recognize", "DeepDOC")
200+
layout_recognizer, parser_model_name = normalize_layout_recognizer(
201+
parser_config.get("layout_recognize", "DeepDOC")
202+
)
200203

201204
if isinstance(layout_recognizer, bool):
202205
layout_recognizer = "DeepDOC" if layout_recognizer else "Plain Text"
@@ -205,6 +208,8 @@ def chunk(filename, binary=None, from_page=0, to_page=100000,
205208
pdf_parser = PARSERS.get(name, by_plaintext)
206209
callback(0.1, "Start to parse.")
207210

211+
kwargs.pop("parse_method", None)
212+
kwargs.pop("mineru_llm_name", None)
208213
sections, tbls, pdf_parser = pdf_parser(
209214
filename = filename,
210215
binary = binary,
@@ -214,6 +219,7 @@ def chunk(filename, binary=None, from_page=0, to_page=100000,
214219
callback = callback,
215220
pdf_cls = Pdf,
216221
layout_recognizer = layout_recognizer,
222+
mineru_llm_name=parser_model_name,
217223
parse_method = "manual",
218224
**kwargs
219225
)
@@ -232,7 +238,7 @@ def _normalize_section(section):
232238
poss = pdf_parser.extract_positions(poss)
233239
if poss:
234240
first = poss[0] # tuple: ([pn], x1, x2, y1, y2)
235-
pn = first[0]
241+
pn = first[0]
236242
if isinstance(pn, list) and pn:
237243
pn = pn[0] # [pn] -> pn
238244
poss[0] = (pn, *first[1:])

rag/app/naive.py

Lines changed: 32 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,11 @@
3636
from deepdoc.parser.pdf_parser import PlainParser, VisionParser
3737
from deepdoc.parser.docling_parser import DoclingParser
3838
from deepdoc.parser.tcadp_parser import TCADPParser
39+
from common.parser_config_utils import normalize_layout_recognizer
3940
from rag.nlp import concat_img, find_codec, naive_merge, naive_merge_with_images, naive_merge_docx, rag_tokenizer, tokenize_chunks, tokenize_chunks_with_images, tokenize_table, attach_media_context
4041

4142

42-
def by_deepdoc(filename, binary=None, from_page=0, to_page=100000, lang="Chinese", callback=None, pdf_cls = None ,**kwargs):
43+
def by_deepdoc(filename, binary=None, from_page=0, to_page=100000, lang="Chinese", callback=None, pdf_cls = None, **kwargs):
4344
callback = callback
4445
binary = binary
4546
pdf_parser = pdf_cls() if pdf_cls else Pdf()
@@ -56,11 +57,19 @@ def by_deepdoc(filename, binary=None, from_page=0, to_page=100000, lang="Chinese
5657
return sections, tables, pdf_parser
5758

5859

59-
def by_mineru(filename, binary=None, from_page=0, to_page=100000, lang="Chinese", callback=None, pdf_cls = None ,**kwargs):
60-
parse_method = kwargs.get("parse_method", "raw")
61-
mineru_llm_name = kwargs.get("mineru_llm_name")
62-
tenant_id = kwargs.get("tenant_id")
63-
60+
def by_mineru(
61+
filename,
62+
binary=None,
63+
from_page=0,
64+
to_page=100000,
65+
lang="Chinese",
66+
callback=None,
67+
pdf_cls=None,
68+
parse_method: str = "raw",
69+
mineru_llm_name: str | None = None,
70+
tenant_id: str | None = None,
71+
**kwargs,
72+
):
6473
pdf_parser = None
6574
if tenant_id:
6675
if not mineru_llm_name:
@@ -86,7 +95,7 @@ def by_mineru(filename, binary=None, from_page=0, to_page=100000, lang="Chinese"
8695
callback=callback,
8796
parse_method=parse_method,
8897
lang=lang,
89-
**kwargs
98+
**kwargs,
9099
)
91100
return sections, tables, pdf_parser
92101
except Exception as e:
@@ -97,9 +106,7 @@ def by_mineru(filename, binary=None, from_page=0, to_page=100000, lang="Chinese"
97106
return None, None, None
98107

99108

100-
101-
102-
def by_docling(filename, binary=None, from_page=0, to_page=100000, lang="Chinese", callback=None, pdf_cls = None ,**kwargs):
109+
def by_docling(filename, binary=None, from_page=0, to_page=100000, lang="Chinese", callback=None, pdf_cls = None, **kwargs):
103110
pdf_parser = DoclingParser()
104111
parse_method = kwargs.get("parse_method", "raw")
105112

@@ -118,7 +125,7 @@ def by_docling(filename, binary=None, from_page=0, to_page=100000, lang="Chinese
118125
return sections, tables, pdf_parser
119126

120127

121-
def by_tcadp(filename, binary=None, from_page=0, to_page=100000, lang="Chinese", callback=None, pdf_cls = None ,**kwargs):
128+
def by_tcadp(filename, binary=None, from_page=0, to_page=100000, lang="Chinese", callback=None, pdf_cls = None, **kwargs):
122129
tcadp_parser = TCADPParser()
123130

124131
if not tcadp_parser.check_installation():
@@ -136,10 +143,19 @@ def by_tcadp(filename, binary=None, from_page=0, to_page=100000, lang="Chinese",
136143

137144

138145
def by_plaintext(filename, binary=None, from_page=0, to_page=100000, callback=None, **kwargs):
139-
if kwargs.get("layout_recognizer", "") == "Plain Text":
146+
layout_recognizer = (kwargs.get("layout_recognizer") or "").strip()
147+
if (not layout_recognizer) or (layout_recognizer == "Plain Text"):
140148
pdf_parser = PlainParser()
141149
else:
142-
vision_model = LLMBundle(kwargs["tenant_id"], LLMType.IMAGE2TEXT, llm_name=kwargs.get("layout_recognizer", ""), lang=kwargs.get("lang", "Chinese"))
150+
tenant_id = kwargs.get("tenant_id")
151+
if not tenant_id:
152+
raise ValueError("tenant_id is required when using vision layout recognizer")
153+
vision_model = LLMBundle(
154+
tenant_id,
155+
LLMType.IMAGE2TEXT,
156+
llm_name=layout_recognizer,
157+
lang=kwargs.get("lang", "Chinese"),
158+
)
143159
pdf_parser = VisionParser(vision_model=vision_model, **kwargs)
144160

145161
sections, tables = pdf_parser(
@@ -716,14 +732,9 @@ def chunk(filename, binary=None, from_page=0, to_page=100000, lang="Chinese", ca
716732
return res
717733

718734
elif re.search(r"\.pdf$", filename, re.IGNORECASE):
719-
layout_recognizer_raw = parser_config.get("layout_recognize", "DeepDOC")
720-
parser_model_name = None
721-
layout_recognizer = layout_recognizer_raw
722-
if isinstance(layout_recognizer_raw, str):
723-
lowered = layout_recognizer_raw.lower()
724-
if lowered.endswith("@mineru"):
725-
parser_model_name = layout_recognizer_raw.split("@", 1)[0]
726-
layout_recognizer = "MinerU"
735+
layout_recognizer, parser_model_name = normalize_layout_recognizer(
736+
parser_config.get("layout_recognize", "DeepDOC")
737+
)
727738

728739
if parser_config.get("analyze_hyperlink", False) and is_root:
729740
urls = extract_links_from_pdf(binary)

rag/app/one.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
from deepdoc.parser import PdfParser, ExcelParser, HtmlParser
2525
from deepdoc.parser.figure_parser import vision_figure_parser_docx_wrapper
2626
from rag.app.naive import by_plaintext, PARSERS
27+
from common.parser_config_utils import normalize_layout_recognizer
2728

2829
class Pdf(PdfParser):
2930
def __call__(self, filename, binary=None, from_page=0,
@@ -82,7 +83,9 @@ def chunk(filename, binary=None, from_page=0, to_page=100000,
8283
callback(0.8, "Finish parsing.")
8384

8485
elif re.search(r"\.pdf$", filename, re.IGNORECASE):
85-
layout_recognizer = parser_config.get("layout_recognize", "DeepDOC")
86+
layout_recognizer, parser_model_name = normalize_layout_recognizer(
87+
parser_config.get("layout_recognize", "DeepDOC")
88+
)
8689

8790
if isinstance(layout_recognizer, bool):
8891
layout_recognizer = "DeepDOC" if layout_recognizer else "Plain Text"
@@ -100,6 +103,7 @@ def chunk(filename, binary=None, from_page=0, to_page=100000,
100103
callback = callback,
101104
pdf_cls = Pdf,
102105
layout_recognizer = layout_recognizer,
106+
mineru_llm_name=parser_model_name,
103107
**kwargs
104108
)
105109

rag/app/paper.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
from deepdoc.parser import PdfParser
2525
import numpy as np
2626
from rag.app.naive import by_plaintext, PARSERS
27+
from common.parser_config_utils import normalize_layout_recognizer
2728

2829

2930
class Pdf(PdfParser):
@@ -149,7 +150,9 @@ def chunk(filename, binary=None, from_page=0, to_page=100000,
149150
"parser_config", {
150151
"chunk_token_num": 512, "delimiter": "\n!?。;!?", "layout_recognize": "DeepDOC"})
151152
if re.search(r"\.pdf$", filename, re.IGNORECASE):
152-
layout_recognizer = parser_config.get("layout_recognize", "DeepDOC")
153+
layout_recognizer, parser_model_name = normalize_layout_recognizer(
154+
parser_config.get("layout_recognize", "DeepDOC")
155+
)
153156

154157
if isinstance(layout_recognizer, bool):
155158
layout_recognizer = "DeepDOC" if layout_recognizer else "Plain Text"
@@ -163,6 +166,8 @@ def chunk(filename, binary=None, from_page=0, to_page=100000,
163166
paper = pdf_parser(filename if not binary else binary,
164167
from_page=from_page, to_page=to_page, callback=callback)
165168
else:
169+
kwargs.pop("parse_method", None)
170+
kwargs.pop("mineru_llm_name", None)
166171
sections, tables, pdf_parser = pdf_parser(
167172
filename=filename,
168173
binary=binary,
@@ -171,6 +176,8 @@ def chunk(filename, binary=None, from_page=0, to_page=100000,
171176
lang=lang,
172177
callback=callback,
173178
pdf_cls=Pdf,
179+
layout_recognizer=layout_recognizer,
180+
mineru_llm_name=parser_model_name,
174181
parse_method="paper",
175182
**kwargs
176183
)

rag/app/presentation.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424

2525
from deepdoc.parser import PdfParser, PptParser, PlainParser
2626
from rag.app.naive import by_plaintext, PARSERS
27+
from common.parser_config_utils import normalize_layout_recognizer
2728
from rag.nlp import rag_tokenizer
2829
from rag.nlp import tokenize, is_english
2930

@@ -195,7 +196,9 @@ def chunk(filename, binary=None, from_page=0, to_page=100000,
195196
res.append(d)
196197
return res
197198
elif re.search(r"\.pdf$", filename, re.IGNORECASE):
198-
layout_recognizer = parser_config.get("layout_recognize", "DeepDOC")
199+
layout_recognizer, parser_model_name = normalize_layout_recognizer(
200+
parser_config.get("layout_recognize", "DeepDOC")
201+
)
199202

200203
if isinstance(layout_recognizer, bool):
201204
layout_recognizer = "DeepDOC" if layout_recognizer else "Plain Text"
@@ -213,6 +216,7 @@ def chunk(filename, binary=None, from_page=0, to_page=100000,
213216
callback=callback,
214217
pdf_cls=Pdf,
215218
layout_recognizer=layout_recognizer,
219+
mineru_llm_name=parser_model_name,
216220
**kwargs
217221
)
218222

0 commit comments

Comments
 (0)