Views
No views yet
specific compound, substituent,
Markush structure, or Markush structure & substituent.\boxed{[reference name]: structure type}| Model | RefMatch Pass@1 | StruCls Pass@1 | All Pass@1 | RefMatch Pass@all | StruCls Pass@all | All Pass@all |
|---|---|---|---|---|---|---|
| GPT-5 | 63.13 | 87.88 | 59.60 | 53.54 | 86.36 | 50.51 |
| Claude-4.5-sonnet | 57.07 | 78.79 | 48.99 | 45.96 | 73.74 | 36.87 |
| Gemini-2.5-pro | 75.25 | 83.84 | 73.23 | 66.16 | 82.32 | 63.13 |
| GLM-4.5V | 56.06 | 81.31 | 49.49 | 53.54 | 76.77 | 44.95 |
| Qwen-vl-max | 47.98 | 76.77 | 43.43 | 44.44 | 66.16 | 33.84 |
| Qwen3-vl-8B | 44.95 | 34.34 | 17.17 | 40.40 | 29.29 | 10.61 |
| Hiro-Chemical-Insights | 93.43 | 98.48 | 91.92 | 90.40 | 97.98 | 88.38 |
All Pass@1 from 73.23 to 91.92 and
All Pass@all from 63.13 to 88.38.transformers, accelerate, torch, and Qwen-VL compatible
image/video utilities in a GPU environment.1from PIL import Image
2from transformers import AutoProcessor, Qwen3VLForConditionalGeneration
3
4model_id = "PatSnap/Hiro-Chemical-Insights"
5
6model = Qwen3VLForConditionalGeneration.from_pretrained(
7 model_id,
8 torch_dtype="auto",
9 device_map="auto",
10)
11processor = AutoProcessor.from_pretrained(model_id)
12
13image = Image.open("images/US20230002396A1/page_064_4_mol_with_box.jpeg")
14prompt = """Please identify the reference name(s) of the chemical molecule within the blue rectangle in the image. Determine which category it belongs to: [Markush structure], [substituent], [specific compound], or [Markush structure, substituent].
15
16- A Markush structure contains a fixed parent nucleus and at least one variable substituent with a defined range (for example, R1).
17- A substituent is a component of a complete molecule and cannot form a complete molecule independently. Image context matters: a structure listed in table column "R" is a substituent.
18- A Markush structure can itself act as a substituent; use both structure types in that case.
19- In tables, a Markush structure can correspond to multiple names, starting at the same vertical height and proceeding downwards until the next structure.
20- Return complete reference names. Join a table title and sequence number when needed (for example, "Formula IV"). Return all names if there are multiple. Return "None" if no name is visible.
21
22End with exactly one answer in this format:
23\\boxed{[reference name 1, reference name 2]: [structure type 1, structure type 2]}
24
25Examples:
26\\boxed{[Compound No. 55]: [substituent, Markush structure]}
27\\boxed{[Compound 1, Compound 2]: [Markush structure]}
28\\boxed{[3,6-Dichloropyridazine]: [specific compound]}
29\\boxed{[None]: [specific compound]}"""
30
31messages = [
32 {
33 "role": "user",
34 "content": [
35 {"type": "image", "image": image},
36 {"type": "text", "text": prompt},
37 ],
38 }
39]
40
41text = processor.apply_chat_template(
42 messages,
43 tokenize=False,
44 add_generation_prompt=True,
45)
46inputs = processor(text=[text], images=[image], return_tensors="pt").to(model.device)
47generated_ids = model.generate(**inputs, max_new_tokens=4096)
48output = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]
49print(output)1@inproceedings{zhong-etal-2026-multimodal,
2 title = "Multimodal Chemical Structure-Text Coreference in Intellectual Property via Rule-guided Reinforcement Learning",
3 author = "Zhong, Hanmeng and
4 Wu, Wentao and
5 Chen, Linqing and
6 Zhou, Peng",
7 editor = "Liakata, Maria and
8 Moreira, Viviane P. and
9 Zhang, Jiajun and
10 Jurgens, David",
11 booktitle = "Findings of the {A}ssociation for {C}omputational {L}inguistics: {ACL} 2026",
12 month = jul,
13 year = "2026",
14 address = "San Diego, California, United States",
15 publisher = "Association for Computational Linguistics",
16 url = "https://aclanthology.org/2026.findings-acl.1489/",
17 pages = "29784--29796",
18 ISBN = "979-8-89176-395-1",
19}