{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/atom-level-optical-chemical-structure","title":"Atom-Level Optical Chemical Structure Recognition with Limited Supervision","arxiv_id":"2404.01743","date":"2024-04-02","proceeding":"CVPR 2024 1","authors":["Martijn Oldenhof","Edward De Brouwer","Adam Arany","Yves Moreau"],"abstract":"Identifying the chemical structure from a graphical representation, or image, of a molecule is a challenging pattern recognition task that would greatly benefit drug development. Yet, existing methods for chemical structure recognition do not typically generalize well, and show diminished effectiveness when confronted with domains where data is sparse, or costly to generate, such as hand-drawn molecule images. To address this limitation, we propose a new chemical structure recognition tool that delivers state-of-the-art performance and can adapt to new domains with a limited number of data samples and supervision. Unlike previous approaches, our method provides atom-level localization, and can therefore segment the image into the different atoms and bonds. Our model is the first model to perform OCSR with atom-level entity detection with only SMILES supervision. Through rigorous and extensive benchmarking, we demonstrate the preeminence of our chemical structure recognition approach in terms of data efficiency, accuracy, and atom-level entity prediction.","url_abs":"https://arxiv.org/abs/2404.01743v1","url_pdf":"https://arxiv.org/pdf/2404.01743v1.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"atom-level-optical-chemical-structure","repo_url":"https://github.com/molden/atomlenz","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"benchmarking","task_name":"Benchmarking"}],"methods":[],"datasets_introduced":[{"slug":"hand-drawn-training-set","name":"hand-drawn training set","full_name":""}],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2404.01743","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2404.01743"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"deterministic:regex_extraction","url":"https://github.com/molden/atomlenz","reach":null}],"summary":{"ran_fixture":2,"ran_draft_wrong":1,"ran":3,"ran_honours":1},"by_repo_kind":{"official":{"samples":7,"ran":7,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"d8387858dc58928b","entry":"bb_box_intersects","repo":"molden/atomlenz","repo_kind":"official","path":"AtomLenz/utils_graph.py","file_url":"https://github.com/molden/atomlenz/blob/HEAD/AtomLenz/utils_graph.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d8387858dc58928b"}},{"code_sha256_prefix":"c7dedbb8e3b99ff4","entry":"bb_intersection_over_union","repo":"molden/atomlenz","repo_kind":"official","path":"AtomLenz/utils_graph.py","file_url":"https://github.com/molden/atomlenz/blob/HEAD/AtomLenz/utils_graph.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"c7dedbb8e3b99ff4"}},{"code_sha256_prefix":"ac195b4d2f446147","entry":"create_molecules","repo":"molden/atomlenz","repo_kind":"official","path":"AtomLenz/utils_graph.py","file_url":"https://github.com/molden/atomlenz/blob/HEAD/AtomLenz/utils_graph.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"ac195b4d2f446147"}},{"code_sha256_prefix":"a33eee2b3e40d1c2","entry":"dist_filter_bboxes","repo":"molden/atomlenz","repo_kind":"official","path":"AtomLenz/utils_graph.py","file_url":"https://github.com/molden/atomlenz/blob/HEAD/AtomLenz/utils_graph.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"a33eee2b3e40d1c2"}},{"code_sha256_prefix":"8a805833e6e55c05","entry":"distance","repo":"molden/atomlenz","repo_kind":"official","path":"AtomLenz/utils_graph.py","file_url":"https://github.com/molden/atomlenz/blob/HEAD/AtomLenz/utils_graph.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"8a805833e6e55c05"}},{"code_sha256_prefix":"27e0b4641974894d","entry":"iou_filter_bboxes","repo":"molden/atomlenz","repo_kind":"official","path":"AtomLenz/utils_graph.py","file_url":"https://github.com/molden/atomlenz/blob/HEAD/AtomLenz/utils_graph.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"27e0b4641974894d"}},{"code_sha256_prefix":"7490fad962081afc","entry":"tensordelete","repo":"molden/atomlenz","repo_kind":"official","path":"AtomLenz/utils_graph.py","file_url":"https://github.com/molden/atomlenz/blob/HEAD/AtomLenz/utils_graph.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"7490fad962081afc"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}