{"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/text-gestalt-stroke-aware-scene-text-image","title":"Text Gestalt: Stroke-Aware Scene Text Image Super-Resolution","arxiv_id":"2112.08171","date":"2021-12-13","proceeding":null,"authors":["Jingye Chen","Haiyang Yu","jianqi ma","Bin Li","xiangyang xue"],"abstract":"In the last decade, the blossom of deep learning has witnessed the rapid development of scene text recognition. However, the recognition of low-resolution scene text images remains a challenge. Even though some super-resolution methods have been proposed to tackle this problem, they usually treat text images as general images while ignoring the fact that the visual quality of strokes (the atomic unit of text) plays an essential role for text recognition. According to Gestalt Psychology, humans are capable of composing parts of details into the most similar objects guided by prior knowledge. Likewise, when humans observe a low-resolution text image, they will inherently use partial stroke-level details to recover the appearance of holistic characters. Inspired by Gestalt Psychology, we put forward a Stroke-Aware Scene Text Image Super-Resolution method containing a Stroke-Focused Module (SFM) to concentrate on stroke-level internal structures of characters in text images. Specifically, we attempt to design rules for decomposing English characters and digits at stroke-level, then pre-train a text recognizer to provide stroke-level attention maps as positional clues with the purpose of controlling the consistency between the generated super-resolution image and high-resolution ground truth. The extensive experimental results validate that the proposed method can indeed generate more distinguishable images on TextZoom and manually constructed Chinese character dataset Degraded-IC13. Furthermore, since the proposed SFM is only used to provide stroke-level guidance when training, it will not bring any time overhead during the test phase. Code is available at https://github.com/FudanVI/FudanOCR/tree/main/text-gestalt.","url_abs":"https://arxiv.org/abs/2112.08171v1","url_pdf":"https://arxiv.org/pdf/2112.08171v1.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":"text-gestalt-stroke-aware-scene-text-image","repo_url":"https://github.com/fudanvi/fudanocr","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"text-gestalt-stroke-aware-scene-text-image","repo_url":"https://github.com/zhaominyiz/c3-stisr","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"image-super-resolution","task_name":"Image Super-Resolution"},{"task_slug":"scene-text-recognition","task_name":"Scene Text Recognition"},{"task_slug":"super-resolution","task_name":"Super-Resolution"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=2112.08171","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2112.08171"}},"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":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/fudanvi/fudanocr","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/zhaominyiz/c3-stisr","reach":null}],"summary":{"ran_draft_wrong":3,"ran_violates":1},"by_repo_kind":{"official":{"samples":4,"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":4,"samples":[{"code_sha256_prefix":"58f1bb86e3563501","entry":"attention","repo":"fudanvi/fudanocr","repo_kind":"official","path":"stroke-level-decomposition/model/transformer.py","file_url":"https://github.com/fudanvi/fudanocr/blob/HEAD/stroke-level-decomposition/model/transformer.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"58f1bb86e3563501"}},{"code_sha256_prefix":"6cdff690e29fd5e2","entry":"clones","repo":"fudanvi/fudanocr","repo_kind":"official","path":"stroke-level-decomposition/model/transformer.py","file_url":"https://github.com/fudanvi/fudanocr/blob/HEAD/stroke-level-decomposition/model/transformer.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":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"6cdff690e29fd5e2"}},{"code_sha256_prefix":"b59cd9ce9c63bd48","entry":"conv3x3_block","repo":"fudanvi/fudanocr","repo_kind":"official","path":"scene-text-telescope/model/stn_head.py","file_url":"https://github.com/fudanvi/fudanocr/blob/HEAD/scene-text-telescope/model/stn_head.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":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"b59cd9ce9c63bd48"}},{"code_sha256_prefix":"9cd02a85b4800229","entry":"subsequent_mask","repo":"fudanvi/fudanocr","repo_kind":"official","path":"stroke-level-decomposition/model/transformer.py","file_url":"https://github.com/fudanvi/fudanocr/blob/HEAD/stroke-level-decomposition/model/transformer.py","link_basis":"first_harvest_node","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"9cd02a85b4800229"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}