MCPcopy Create free account
hub / github.com/Tencent/WeKnora / Parser

Class Parser

docreader/parser/parser.py:11–82  ·  view source on GitHub ↗

Document parser facade (lightweight version). Converts files/URLs to markdown + image references. No chunking, no storage, no OCR, no VLM.

Source from the content-addressed store, hash-verified

9
10
11class Parser:
12 """Document parser facade (lightweight version).
13
14 Converts files/URLs to markdown + image references.
15 No chunking, no storage, no OCR, no VLM.
16 """
17
18 def __init__(self):
19 self.registry = registry
20 logger.info(
21 "Parser initialized with engines: %s",
22 ", ".join(self.registry.get_engine_names()),
23 )
24
25 def parse_file(
26 self,
27 file_name: str,
28 file_type: str,
29 content: bytes,
30 parser_engine: Optional[str] = None,
31 engine_overrides: Optional[dict[str, Any]] = None,
32 ) -> Document:
33 """Parse file content to markdown."""
34 engine = parser_engine or ""
35 overrides = engine_overrides or {}
36 logger.info(
37 "Parsing file: %s, type: %s, engine: %s",
38 file_name,
39 file_type,
40 engine or "builtin",
41 )
42
43 cls = self.registry.get_parser_class(engine, file_type)
44 logger.info(
45 "Creating %s parser instance for %s file",
46 cls.__name__,
47 file_type,
48 )
49 parser = cls(
50 file_name=file_name,
51 file_type=file_type,
52 **overrides,
53 )
54
55 logger.info("Starting to parse file content, size: %d bytes", len(content))
56 result = parser.parse(content)
57
58 if not result.content:
59 logger.warning("Parser returned empty content for file: %s", file_name)
60 logger.info(
61 "Parsed file %s, content length=%d", file_name, len(result.content)
62 )
63 return result
64
65 def parse_url(
66 self,
67 url: str,
68 title: str,

Callers 2

__init__Method · 0.90
mainFunction · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected