docling 2.52.0__py3-none-any.whl → 2.53.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of docling might be problematic. Click here for more details.

docling/cli/main.py CHANGED
@@ -64,6 +64,8 @@ from docling.datamodel.vlm_model_specs import (
64
64
  GOT2_TRANSFORMERS,
65
65
  GRANITE_VISION_OLLAMA,
66
66
  GRANITE_VISION_TRANSFORMERS,
67
+ GRANITEDOCLING_MLX,
68
+ GRANITEDOCLING_TRANSFORMERS,
67
69
  SMOLDOCLING_MLX,
68
70
  SMOLDOCLING_TRANSFORMERS,
69
71
  SMOLDOCLING_VLLM,
@@ -334,7 +336,7 @@ def convert( # noqa: C901
334
336
  vlm_model: Annotated[
335
337
  VlmModelType,
336
338
  typer.Option(..., help="Choose the VLM model to use with PDF or image files."),
337
- ] = VlmModelType.SMOLDOCLING,
339
+ ] = VlmModelType.GRANITEDOCLING,
338
340
  asr_model: Annotated[
339
341
  AsrModelType,
340
342
  typer.Option(..., help="Choose the ASR model to use with audio/video files."),
@@ -684,6 +686,18 @@ def convert( # noqa: C901
684
686
  "To run SmolDocling faster, please install mlx-vlm:\n"
685
687
  "pip install mlx-vlm"
686
688
  )
689
+ elif vlm_model == VlmModelType.GRANITEDOCLING:
690
+ pipeline_options.vlm_options = GRANITEDOCLING_TRANSFORMERS
691
+ if sys.platform == "darwin":
692
+ try:
693
+ import mlx_vlm
694
+
695
+ pipeline_options.vlm_options = GRANITEDOCLING_MLX
696
+ except ImportError:
697
+ _log.warning(
698
+ "To run GraniteDocling faster, please install mlx-vlm:\n"
699
+ "pip install mlx-vlm"
700
+ )
687
701
  elif vlm_model == VlmModelType.SMOLDOCLING_VLLM:
688
702
  pipeline_options.vlm_options = SMOLDOCLING_VLLM
689
703
 
docling/cli/models.py CHANGED
@@ -33,6 +33,8 @@ class _AvailableModels(str, Enum):
33
33
  CODE_FORMULA = "code_formula"
34
34
  PICTURE_CLASSIFIER = "picture_classifier"
35
35
  SMOLVLM = "smolvlm"
36
+ GRANITEDOCLING = "granitedocling"
37
+ GRANITEDOCLING_MLX = "granitedocling_mlx"
36
38
  SMOLDOCLING = "smoldocling"
37
39
  SMOLDOCLING_MLX = "smoldocling_mlx"
38
40
  GRANITE_VISION = "granite_vision"
@@ -108,6 +110,8 @@ def download(
108
110
  with_code_formula=_AvailableModels.CODE_FORMULA in to_download,
109
111
  with_picture_classifier=_AvailableModels.PICTURE_CLASSIFIER in to_download,
110
112
  with_smolvlm=_AvailableModels.SMOLVLM in to_download,
113
+ with_granitedocling=_AvailableModels.GRANITEDOCLING in to_download,
114
+ with_granitedocling_mlx=_AvailableModels.GRANITEDOCLING_MLX in to_download,
111
115
  with_smoldocling=_AvailableModels.SMOLDOCLING in to_download,
112
116
  with_smoldocling_mlx=_AvailableModels.SMOLDOCLING_MLX in to_download,
113
117
  with_granite_vision=_AvailableModels.GRANITE_VISION in to_download,
@@ -12,7 +12,7 @@ from pydantic import (
12
12
  )
13
13
  from typing_extensions import deprecated
14
14
 
15
- from docling.datamodel import asr_model_specs
15
+ from docling.datamodel import asr_model_specs, vlm_model_specs
16
16
 
17
17
  # Import the following for backwards compatibility
18
18
  from docling.datamodel.accelerator_options import AcceleratorDevice, AcceleratorOptions
@@ -114,7 +114,11 @@ class RapidOcrOptions(OcrOptions):
114
114
  cls_model_path: Optional[str] = None # same default as rapidocr
115
115
  rec_model_path: Optional[str] = None # same default as rapidocr
116
116
  rec_keys_path: Optional[str] = None # same default as rapidocr
117
- rec_font_path: Optional[str] = None # same default as rapidocr
117
+ rec_font_path: Optional[str] = None # Deprecated, please use font_path instead
118
+ font_path: Optional[str] = None # same default as rapidocr
119
+
120
+ # Dictionary to overwrite or pass-through additional parameters
121
+ rapidocr_params: Dict[str, Any] = Field(default_factory=dict)
118
122
 
119
123
  model_config = ConfigDict(
120
124
  extra="forbid",
@@ -286,7 +290,7 @@ class VlmPipelineOptions(PaginatedPipelineOptions):
286
290
  )
287
291
  # If True, text from backend will be used instead of generated text
288
292
  vlm_options: Union[InlineVlmOptions, ApiVlmOptions] = (
289
- smoldocling_vlm_conversion_options
293
+ vlm_model_specs.GRANITEDOCLING_TRANSFORMERS
290
294
  )
291
295
 
292
296
 
@@ -18,6 +18,35 @@ from docling.datamodel.pipeline_options_vlm_model import (
18
18
  _log = logging.getLogger(__name__)
19
19
 
20
20
 
21
+ # Granite-Docling
22
+ GRANITEDOCLING_TRANSFORMERS = InlineVlmOptions(
23
+ repo_id="ibm-granite/granite-docling-258M",
24
+ prompt="Convert this page to docling.",
25
+ response_format=ResponseFormat.DOCTAGS,
26
+ inference_framework=InferenceFramework.TRANSFORMERS,
27
+ transformers_model_type=TransformersModelType.AUTOMODEL_IMAGETEXTTOTEXT,
28
+ supported_devices=[
29
+ AcceleratorDevice.CPU,
30
+ AcceleratorDevice.CUDA,
31
+ ],
32
+ scale=2.0,
33
+ temperature=0.0,
34
+ max_new_tokens=8192,
35
+ stop_strings=["</doctag>", "<|end_of_text|>"],
36
+ )
37
+
38
+ GRANITEDOCLING_MLX = InlineVlmOptions(
39
+ repo_id="ibm-granite/granite-docling-258M-mlx",
40
+ prompt="Convert this page to docling.",
41
+ response_format=ResponseFormat.DOCTAGS,
42
+ inference_framework=InferenceFramework.MLX,
43
+ supported_devices=[AcceleratorDevice.MPS],
44
+ scale=2.0,
45
+ temperature=0.0,
46
+ max_new_tokens=8192,
47
+ stop_strings=["</doctag>", "<|end_of_text|>"],
48
+ )
49
+
21
50
  # SmolDocling
22
51
  SMOLDOCLING_MLX = InlineVlmOptions(
23
52
  repo_id="ds4sd/SmolDocling-256M-preview-mlx-bf16",
@@ -272,3 +301,4 @@ class VlmModelType(str, Enum):
272
301
  GRANITE_VISION_VLLM = "granite_vision_vllm"
273
302
  GRANITE_VISION_OLLAMA = "granite_vision_ollama"
274
303
  GOT_OCR_2 = "got_ocr_2"
304
+ GRANITEDOCLING = "granite_docling"
@@ -62,32 +62,44 @@ class RapidOcrModel(BaseOcrModel):
62
62
  }
63
63
  backend_enum = _ALIASES.get(self.options.backend, EngineType.ONNXRUNTIME)
64
64
 
65
+ params = {
66
+ # Global settings (these are still correct)
67
+ "Global.text_score": self.options.text_score,
68
+ "Global.font_path": self.options.font_path,
69
+ # "Global.verbose": self.options.print_verbose,
70
+ # Detection model settings
71
+ "Det.model_path": self.options.det_model_path,
72
+ "Det.use_cuda": use_cuda,
73
+ "Det.use_dml": use_dml,
74
+ "Det.intra_op_num_threads": intra_op_num_threads,
75
+ # Classification model settings
76
+ "Cls.model_path": self.options.cls_model_path,
77
+ "Cls.use_cuda": use_cuda,
78
+ "Cls.use_dml": use_dml,
79
+ "Cls.intra_op_num_threads": intra_op_num_threads,
80
+ # Recognition model settings
81
+ "Rec.model_path": self.options.rec_model_path,
82
+ "Rec.font_path": self.options.rec_font_path,
83
+ "Rec.keys_path": self.options.rec_keys_path,
84
+ "Rec.use_cuda": use_cuda,
85
+ "Rec.use_dml": use_dml,
86
+ "Rec.intra_op_num_threads": intra_op_num_threads,
87
+ "Det.engine_type": backend_enum,
88
+ "Cls.engine_type": backend_enum,
89
+ "Rec.engine_type": backend_enum,
90
+ }
91
+
92
+ if self.options.rec_font_path is not None:
93
+ _log.warning(
94
+ "The 'rec_font_path' option for RapidOCR is deprecated. Please use 'font_path' instead."
95
+ )
96
+ user_params = self.options.rapidocr_params
97
+ if user_params:
98
+ _log.debug("Overwriting RapidOCR params with user-provided values.")
99
+ params.update(user_params)
100
+
65
101
  self.reader = RapidOCR(
66
- params={
67
- # Global settings (these are still correct)
68
- "Global.text_score": self.options.text_score,
69
- # "Global.verbose": self.options.print_verbose,
70
- # Detection model settings
71
- "Det.model_path": self.options.det_model_path,
72
- "Det.use_cuda": use_cuda,
73
- "Det.use_dml": use_dml,
74
- "Det.intra_op_num_threads": intra_op_num_threads,
75
- # Classification model settings
76
- "Cls.model_path": self.options.cls_model_path,
77
- "Cls.use_cuda": use_cuda,
78
- "Cls.use_dml": use_dml,
79
- "Cls.intra_op_num_threads": intra_op_num_threads,
80
- # Recognition model settings
81
- "Rec.model_path": self.options.rec_model_path,
82
- "Rec.font_path": self.options.rec_font_path,
83
- "Rec.keys_path": self.options.rec_keys_path,
84
- "Rec.use_cuda": use_cuda,
85
- "Rec.use_dml": use_dml,
86
- "Rec.intra_op_num_threads": intra_op_num_threads,
87
- "Det.engine_type": backend_enum,
88
- "Cls.engine_type": backend_enum,
89
- "Rec.engine_type": backend_enum,
90
- }
102
+ params=params,
91
103
  )
92
104
 
93
105
  def __call__(
@@ -120,6 +132,9 @@ class RapidOcrModel(BaseOcrModel):
120
132
  use_cls=self.options.use_cls,
121
133
  use_rec=self.options.use_rec,
122
134
  )
135
+ if result is None or result.boxes is None:
136
+ _log.warning("RapidOCR returned empty result!")
137
+ continue
123
138
  result = list(
124
139
  zip(result.boxes.tolist(), result.txts, result.scores)
125
140
  )
@@ -10,6 +10,8 @@ from docling.datamodel.pipeline_options import (
10
10
  )
11
11
  from docling.datamodel.settings import settings
12
12
  from docling.datamodel.vlm_model_specs import (
13
+ GRANITEDOCLING_MLX,
14
+ GRANITEDOCLING_TRANSFORMERS,
13
15
  SMOLDOCLING_MLX,
14
16
  SMOLDOCLING_TRANSFORMERS,
15
17
  )
@@ -34,6 +36,8 @@ def download_models(
34
36
  with_code_formula: bool = True,
35
37
  with_picture_classifier: bool = True,
36
38
  with_smolvlm: bool = False,
39
+ with_granitedocling: bool = False,
40
+ with_granitedocling_mlx: bool = False,
37
41
  with_smoldocling: bool = False,
38
42
  with_smoldocling_mlx: bool = False,
39
43
  with_granite_vision: bool = False,
@@ -86,6 +90,24 @@ def download_models(
86
90
  progress=progress,
87
91
  )
88
92
 
93
+ if with_granitedocling:
94
+ _log.info("Downloading GraniteDocling model...")
95
+ download_hf_model(
96
+ repo_id=GRANITEDOCLING_TRANSFORMERS.repo_id,
97
+ local_dir=output_dir / GRANITEDOCLING_TRANSFORMERS.repo_cache_folder,
98
+ force=force,
99
+ progress=progress,
100
+ )
101
+
102
+ if with_granitedocling_mlx:
103
+ _log.info("Downloading GraniteDocling MLX model...")
104
+ download_hf_model(
105
+ repo_id=GRANITEDOCLING_MLX.repo_id,
106
+ local_dir=output_dir / GRANITEDOCLING_MLX.repo_cache_folder,
107
+ force=force,
108
+ progress=progress,
109
+ )
110
+
89
111
  if with_smoldocling:
90
112
  _log.info("Downloading SmolDocling model...")
91
113
  download_hf_model(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: docling
3
- Version: 2.52.0
3
+ Version: 2.53.0
4
4
  Summary: SDK and CLI for parsing PDF, DOCX, HTML, and more, to a unified document representation for powering downstream workflows such as gen AI applications.
5
5
  Author-email: Christoph Auer <cau@zurich.ibm.com>, Michele Dolfi <dol@zurich.ibm.com>, Maxim Lysak <mly@zurich.ibm.com>, Nikos Livathinos <nli@zurich.ibm.com>, Ahmed Nassar <ahn@zurich.ibm.com>, Panos Vagenas <pva@zurich.ibm.com>, Peter Staar <taa@zurich.ibm.com>
6
6
  License-Expression: MIT
@@ -108,7 +108,7 @@ Docling simplifies document processing, parsing diverse formats — including ad
108
108
  * 🔒 Local execution capabilities for sensitive data and air-gapped environments
109
109
  * 🤖 Plug-and-play [integrations][integrations] incl. LangChain, LlamaIndex, Crew AI & Haystack for agentic AI
110
110
  * 🔍 Extensive OCR support for scanned PDFs and images
111
- * 👓 Support of several Visual Language Models ([SmolDocling](https://huggingface.co/ds4sd/SmolDocling-256M-preview))
111
+ * 👓 Support of several Visual Language Models ([GraniteDocling](https://huggingface.co/ibm-granite/granite-docling-258M))
112
112
  * 🎙️ Audio support with Automatic Speech Recognition (ASR) models
113
113
  * 🔌 Connect to any agent using the [MCP server](https://docling-project.github.io/docling/usage/mcp/)
114
114
  * 💻 Simple and convenient CLI
@@ -160,9 +160,9 @@ Docling has a built-in CLI to run conversions.
160
160
  docling https://arxiv.org/pdf/2206.01062
161
161
  ```
162
162
 
163
- You can also use 🥚[SmolDocling](https://huggingface.co/ds4sd/SmolDocling-256M-preview) and other VLMs via Docling CLI:
163
+ You can also use 🥚[GraniteDocling](https://huggingface.co/ibm-granite/granite-docling-258M) and other VLMs via Docling CLI:
164
164
  ```bash
165
- docling --pipeline vlm --vlm-model smoldocling https://arxiv.org/pdf/2206.01062
165
+ docling --pipeline vlm --vlm-model granite_docling https://arxiv.org/pdf/2206.01062
166
166
  ```
167
167
  This will use MLX acceleration on supported Apple Silicon hardware.
168
168
 
@@ -30,8 +30,8 @@ docling/backend/xml/jats_backend.py,sha256=LPj33EFdi2MRCakkLWrRLlUAc-B-949f8zp5g
30
30
  docling/backend/xml/uspto_backend.py,sha256=nyAMr5ht7dclxkVDwsKNeiOhLQrUtRLS8JdscB2AVJg,70924
31
31
  docling/chunking/__init__.py,sha256=h83TDs0AuOV6oEPLAPrn9dpGKiU-2Vg6IRNo4cv6GDA,346
32
32
  docling/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
- docling/cli/main.py,sha256=K4m7dtnLUM2gqU8n_Mntpc_ODrwWtrjBPTUZakQ8erg,32111
34
- docling/cli/models.py,sha256=5C3CZz3HZXoCrBl92Is62KMCtUqsZK-oygj1hqzJ8vo,6008
33
+ docling/cli/main.py,sha256=J_hXHclzT-uNu-cuKNdlc3vwCnyDRxXrJ5L2LJofzeo,32729
34
+ docling/cli/models.py,sha256=rw_2JfeJ-k_iOLpz3JfgL1QbJY__W9nE23nHdov6VfU,6252
35
35
  docling/cli/tools.py,sha256=QhtRxQG0TVrfsMqdv5i7J0_qQy1ZZyWYnHPwJl7b5oY,322
36
36
  docling/datamodel/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
37
  docling/datamodel/accelerator_options.py,sha256=wv6dOFTVAwr9onkE-0pfUqX_fDb6gX53iPPE6o8nKjI,2511
@@ -40,11 +40,11 @@ docling/datamodel/base_models.py,sha256=vOt895z0GsFirHkkI3hM23e9oyUuz9RXfcGFtoIN
40
40
  docling/datamodel/document.py,sha256=ElY7G6FYJ6Bayyw433_tbnxyE47fnQRoBG_mygvOBrA,17370
41
41
  docling/datamodel/extraction.py,sha256=7dgvtK5SuvgfB8LHAwS1FwrW1kcMQJuJG0ol8uAQgoQ,1323
42
42
  docling/datamodel/layout_model_specs.py,sha256=GSkJ-Z_0PVgwWGi7C7TsxbzRjlrWS9ZrHJjHumv-Z5U,2339
43
- docling/datamodel/pipeline_options.py,sha256=N9g-3FA4hFU8A0uGvPmcy1emBBT4JH6u7CUzl3D-Ta0,11049
43
+ docling/datamodel/pipeline_options.py,sha256=28opZ3woXA8IKaG2-BHM-lmmi-gyuScCMHGxhlxGOsk,11290
44
44
  docling/datamodel/pipeline_options_asr_model.py,sha256=7X068xl-qpbyPxC7-TwX7Q6tLyZXGT5h1osZ_xLNLM0,1454
45
45
  docling/datamodel/pipeline_options_vlm_model.py,sha256=AcqqThSW74hwQ6x7pazzm57LnJiUqB7gQi5wFayGlbk,2628
46
46
  docling/datamodel/settings.py,sha256=c0MTw6pO5be_BKxHKYl4SaBJAw_qL-aapxp-g5HHj1A,2084
47
- docling/datamodel/vlm_model_specs.py,sha256=8D-bF95EoaD-Wd29lVX094HPJT1gYN393aFmzv7RipQ,8713
47
+ docling/datamodel/vlm_model_specs.py,sha256=UMXiTzWCXcx2BtF5slYfWhjRXAx0s1oiAvE-vCzrATo,9686
48
48
  docling/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
49
  docling/models/api_vlm_model.py,sha256=-zisU32pgDRbychyG6-neB0qweNbPaYnLXwiGT7SEdI,2859
50
50
  docling/models/base_model.py,sha256=beMGyrpl-yYX3YnLzQkLfxMLxwmDWnbcFhkjbUlWJSU,7146
@@ -59,7 +59,7 @@ docling/models/page_preprocessing_model.py,sha256=EmusNexws5ZmR93js_saVU0BedqZ_H
59
59
  docling/models/picture_description_api_model.py,sha256=o3EkV5aHW_6WzE_fdj_VRnNCrS_btclO_ZCLAUqrfl0,2377
60
60
  docling/models/picture_description_base_model.py,sha256=kLthLhdlgwhootQ4_xhhcAk6A-vso5-qcsFJ3TcYfO0,2991
61
61
  docling/models/picture_description_vlm_model.py,sha256=Uja_BQSk7F-U1J2hm4yeLguirUzKYv1K8zRyw1IYomY,4150
62
- docling/models/rapid_ocr_model.py,sha256=7yZC7I1qoC9xC8xJIjTk2c8VFm89RfB6Vr7IDOnr5gs,7102
62
+ docling/models/rapid_ocr_model.py,sha256=anUVUwaj9Wubgu4FnHdYMuOVkQP_hJiLY1qRToelBoc,7700
63
63
  docling/models/readingorder_model.py,sha256=bZoXHaSwUsa8niSmJrbCuy784ixCeBXT-RQBUfgHJ4A,14925
64
64
  docling/models/table_structure_model.py,sha256=7vO8LisdoqCTsY8X8lsk9d-oD2hVjUtdaWlkMTQxEg0,12518
65
65
  docling/models/tesseract_ocr_cli_model.py,sha256=I3Gn28Y-LD8OfvyCElN9fLiNgpo2sT0uMkVt258253s,12881
@@ -93,15 +93,15 @@ docling/utils/export.py,sha256=VwVUnYDk3mhGmISDbVm306fwpGNnoojouStBD4UajXI,4673
93
93
  docling/utils/glm_utils.py,sha256=TKOWQqWAHsX_w4fvoAA7_2xCi_urhnp1DsmjY8_sk5w,12274
94
94
  docling/utils/layout_postprocessor.py,sha256=sE9UR3Nv4iOk26uoIsN3bFioE7ScfAjj0orDBDneLXg,25166
95
95
  docling/utils/locks.py,sha256=RzqQtD5UispgV71pGN_nU6GYfeN11BN0Sh_Dq9ycqGo,52
96
- docling/utils/model_downloader.py,sha256=lAIyevIC6dyv1TS0ElRSAGNylB5n_V8pWs1PhxH8wAQ,4104
96
+ docling/utils/model_downloader.py,sha256=kFIxr5KUQbisQH0h8yP9GZMqsRJD3Xo1uOIiLiB1T78,4869
97
97
  docling/utils/ocr_utils.py,sha256=nmresYyfin0raanpQc_GGeU3WoLsfExf6SEXNIQ7Djg,2325
98
98
  docling/utils/orientation.py,sha256=jTyLxyT31FlOodZoBMlADHNQK2lAWKYVs5z7pXd_6Cg,1842
99
99
  docling/utils/profiling.py,sha256=YaMGoB9MMZpagF9mb5ndoHj8Lpb9aIdb7El-Pl7IcFs,1753
100
100
  docling/utils/utils.py,sha256=kJtIYuzXeOyJHYlxmLAo7dGM5rEsDa1i84qEsUj1nio,1908
101
101
  docling/utils/visualization.py,sha256=tY2ylE2aiQKkmzlSLnFW-HTfFyqUUMguW18ldd1PLfo,2868
102
- docling-2.52.0.dist-info/licenses/LICENSE,sha256=mBb7ErEcM8VS9OhiGHnQ2kk75HwPhr54W1Oiz3965MY,1088
103
- docling-2.52.0.dist-info/METADATA,sha256=EhUePtqwKQJTgkU9pCtvpWT7wtU-84KXkc48XExkRSQ,11233
104
- docling-2.52.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
105
- docling-2.52.0.dist-info/entry_points.txt,sha256=hzVlbeE0aMSTQ9S0-NTYN0Hmgsn6qL_EA2qX4UbkAuY,149
106
- docling-2.52.0.dist-info/top_level.txt,sha256=vkIywP-USjFyYo1AIRQbWQQaL3xB5jf8vkCYdTIfNic,8
107
- docling-2.52.0.dist-info/RECORD,,
102
+ docling-2.53.0.dist-info/licenses/LICENSE,sha256=mBb7ErEcM8VS9OhiGHnQ2kk75HwPhr54W1Oiz3965MY,1088
103
+ docling-2.53.0.dist-info/METADATA,sha256=bpbaYrZCEppMQ3nPsq8wyn_Opp6IRK_P_rF5JQjCjr4,11247
104
+ docling-2.53.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
105
+ docling-2.53.0.dist-info/entry_points.txt,sha256=hzVlbeE0aMSTQ9S0-NTYN0Hmgsn6qL_EA2qX4UbkAuY,149
106
+ docling-2.53.0.dist-info/top_level.txt,sha256=vkIywP-USjFyYo1AIRQbWQQaL3xB5jf8vkCYdTIfNic,8
107
+ docling-2.53.0.dist-info/RECORD,,