{"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/swintextspotter-scene-text-spotting-via","title":"SwinTextSpotter: Scene Text Spotting via Better Synergy between Text Detection and Text Recognition","arxiv_id":"2203.10209","date":"2022-03-19","proceeding":"CVPR 2022 1","authors":["Mingxin Huang","Yuliang Liu","Zhenghao Peng","Chongyu Liu","Dahua Lin","Shenggao Zhu","Nicholas Yuan","Kai Ding","Lianwen Jin"],"abstract":"End-to-end scene text spotting has attracted great attention in recent years due to the success of excavating the intrinsic synergy of the scene text detection and recognition. However, recent state-of-the-art methods usually incorporate detection and recognition simply by sharing the backbone, which does not directly take advantage of the feature interaction between the two tasks. In this paper, we propose a new end-to-end scene text spotting framework termed SwinTextSpotter. Using a transformer encoder with dynamic head as the detector, we unify the two tasks with a novel Recognition Conversion mechanism to explicitly guide text localization through recognition loss. The straightforward design results in a concise framework that requires neither additional rectification module nor character-level annotation for the arbitrarily-shaped text. Qualitative and quantitative experiments on multi-oriented datasets RoIC13 and ICDAR 2015, arbitrarily-shaped datasets Total-Text and CTW1500, and multi-lingual datasets ReCTS (Chinese) and VinText (Vietnamese) demonstrate SwinTextSpotter significantly outperforms existing methods. Code is available at https://github.com/mxin262/SwinTextSpotter.","url_abs":"https://arxiv.org/abs/2203.10209v1","url_pdf":"https://arxiv.org/pdf/2203.10209v1.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":"swintextspotter-scene-text-spotting-via","repo_url":"https://github.com/mxin262/swintextspotter","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}},{"paper_slug":"swintextspotter-scene-text-spotting-via","repo_url":"https://github.com/jacobtyo/swintextspotter","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"scene-text-detection","task_name":"Scene Text Detection"},{"task_slug":"text-detection","task_name":"Text Detection"},{"task_slug":"text-spotting","task_name":"Text Spotting"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/text-spotting-on-icdar-2015","task":"Text Spotting","dataset":"ICDAR 2015","model":"SwinTextSpotter","rank_in_archive_order":9,"of":18,"metrics":{"F-measure (%) - Generic Lexicon":"70.5","F-measure (%) - Strong Lexicon":"83.9","F-measure (%) - Weak Lexicon":"77.3"},"uses_additional_data":false},{"leaderboard":"/sota/text-spotting-on-inverse-text","task":"Text Spotting","dataset":"Inverse-Text","model":"SwinTextSpotter","rank_in_archive_order":3,"of":9,"metrics":{"F-measure (%) - Full Lexicon":"67.9","F-measure (%) - No Lexicon":"55.4"},"uses_additional_data":false},{"leaderboard":"/sota/text-spotting-on-scut-ctw1500","task":"Text Spotting","dataset":"SCUT-CTW1500","model":"SwinTextSpotter","rank_in_archive_order":10,"of":11,"metrics":{"F-Measure (%) - Full Lexicon":"77.0","F-measure (%) - No Lexicon":"51.8"},"uses_additional_data":false},{"leaderboard":"/sota/text-spotting-on-total-text","task":"Text Spotting","dataset":"Total-Text","model":"SwinTextSpotter","rank_in_archive_order":8,"of":12,"metrics":{"F-measure (%) - Full Lexicon":"84.1","F-measure (%) - No Lexicon":"74.3"},"uses_additional_data":false}],"syntology":{"syntology_url":"https://syntology.ai/paper/2203.10209","atlas_url":"https://app.syntology.ai/?focus=2203.10209","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2203.10209"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+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":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/jacobtyo/swintextspotter","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/mxin262/swintextspotter","reach":{"status":"ok"}},{"provenance":"deterministic:regex_extraction","url":"https://github.com/mxin262/SwinTextSpotter","reach":{"status":"ok"}}],"summary":{"ran":2,"ran_draft_wrong":1,"ran_fixture":1,"unverified":1},"by_repo_kind":{"listed":{"samples":5,"ran":4,"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":5,"samples":[{"code_sha256_prefix":"6bb9db10893a2dc5","entry":"Mlp","repo":"jacobtyo/swintextspotter","repo_kind":"listed","path":"projects/SWINTS/swints/FocalTransformer.py","file_url":"https://github.com/jacobtyo/swintextspotter/blob/HEAD/projects/SWINTS/swints/FocalTransformer.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"6bb9db10893a2dc5"}},{"code_sha256_prefix":"35d8ab558bbe8fa5","entry":"WindowAttention","repo":"jacobtyo/swintextspotter","repo_kind":"listed","path":"projects/SWINTS/swints/FocalTransformer.py","file_url":"https://github.com/jacobtyo/swintextspotter/blob/HEAD/projects/SWINTS/swints/FocalTransformer.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"35d8ab558bbe8fa5"}},{"code_sha256_prefix":"24b94c61ff92499c","entry":"get_relative_position_index","repo":"jacobtyo/swintextspotter","repo_kind":"listed","path":"projects/SWINTS/swints/FocalTransformer.py","file_url":"https://github.com/jacobtyo/swintextspotter/blob/HEAD/projects/SWINTS/swints/FocalTransformer.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"24b94c61ff92499c"}},{"code_sha256_prefix":"7eea7dc3cf233a09","entry":"window_partition_noreshape","repo":"jacobtyo/swintextspotter","repo_kind":"listed","path":"projects/SWINTS/swints/FocalTransformer.py","file_url":"https://github.com/jacobtyo/swintextspotter/blob/HEAD/projects/SWINTS/swints/FocalTransformer.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"7eea7dc3cf233a09"}},{"code_sha256_prefix":"fea7640c6393df7b","entry":"FocalTransformerBlock","repo":"jacobtyo/swintextspotter","repo_kind":"listed","path":"projects/SWINTS/swints/FocalTransformer.py","file_url":"https://github.com/jacobtyo/swintextspotter/blob/HEAD/projects/SWINTS/swints/FocalTransformer.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"fea7640c6393df7b"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}