{"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/arxiv-2508-03256","title":"Beyond Isolated Words: Diffusion Brush for Handwritten Text-Line Generation","arxiv_id":"2508.03256","date":"2025-08-05","proceeding":"ICCV","authors":["Gang Dai","Yifan Zhang","Yutao Qin","Qiangya Guo","Shuangping Huang","Shuicheng Yan"],"abstract":"Existing handwritten text generation methods primarily focus on isolated words. However, realistic handwritten text demands attention not only to individual words but also to the relationships between them, such as vertical alignment and horizontal spacing. Therefore, generating entire text lines emerges as a more promising and comprehensive task. However, this task poses significant challenges, including the accurate modeling of complex style patterns encompassing both intra- and inter-word relationships, and maintaining content accuracy across numerous characters. To address these challenges, we propose DiffBrush, a novel diffusion-based model for handwritten text-line generation. Unlike existing methods, DiffBrush excels in both style imitation and content accuracy through two key strategies: (1) content-decoupled style learning, which disentangles style from content to better capture intra-word and inter-word style patterns by using column- and row-wise masking; and (2) multi-scale content learning, which employs line and word discriminators to ensure global coherence and local accuracy of textual content. Extensive experiments show that DiffBrush excels in generating high-quality text lines, particularly in style reproduction and content preservation. Code is available at https://github.com/dailenson/DiffBrush.","url_abs":"https://arxiv.org/abs/2508.03256","url_pdf":"https://arxiv.org/pdf/2508.03256","source":{"archive":null,"snapshot":"2025-07-28","note":"not in the Papers with Code archive (frozen at the snapshot)","row_kind":"graph","title_abstract_authors_date":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)"},"code_links":[],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2508.03256","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2508.03256"}},"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":[{"mentioned_in_github":null,"is_official":null,"provenance":"deterministic:regex_extraction","mentioned_in_paper":null,"url":"https://github.com/dailenson/DiffBrush","reach":null}],"summary":{"ran":10,"ran_fixture":1,"unverified":9},"by_repo_kind":{"found_in_text":{"samples":20,"ran":11,"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":"3eeb7ad3e51182b6","entry":"BasicBlock","repo":"dailenson/DiffBrush","repo_kind":"found_in_text","path":"models/unet.py","file_url":"https://github.com/dailenson/DiffBrush/blob/HEAD/models/unet.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":"3eeb7ad3e51182b6"}},{"code_sha256_prefix":"560b9460a4ba3c95","entry":"BasicTransformerBlock","repo":"dailenson/DiffBrush","repo_kind":"found_in_text","path":"models/unet.py","file_url":"https://github.com/dailenson/DiffBrush/blob/HEAD/models/unet.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":"560b9460a4ba3c95"}},{"code_sha256_prefix":"513f01ae3d65b92a","entry":"CheckpointFunction","repo":"dailenson/DiffBrush","repo_kind":"found_in_text","path":"models/unet.py","file_url":"https://github.com/dailenson/DiffBrush/blob/HEAD/models/unet.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":"513f01ae3d65b92a"}},{"code_sha256_prefix":"aaf73d2a3d84cc5b","entry":"CrossAttention","repo":"dailenson/DiffBrush","repo_kind":"found_in_text","path":"models/unet.py","file_url":"https://github.com/dailenson/DiffBrush/blob/HEAD/models/unet.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":"aaf73d2a3d84cc5b"}},{"code_sha256_prefix":"763eaf30a7ec2801","entry":"Downsample","repo":"dailenson/DiffBrush","repo_kind":"found_in_text","path":"models/unet.py","file_url":"https://github.com/dailenson/DiffBrush/blob/HEAD/models/unet.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":"763eaf30a7ec2801"}},{"code_sha256_prefix":"ca7d14825009b1a7","entry":"Proxy_Anchor","repo":"dailenson/DiffBrush","repo_kind":"found_in_text","path":"models/unet.py","file_url":"https://github.com/dailenson/DiffBrush/blob/HEAD/models/unet.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":"ca7d14825009b1a7"}},{"code_sha256_prefix":"a527744b4c918a23","entry":"QKVAttention","repo":"dailenson/DiffBrush","repo_kind":"found_in_text","path":"models/unet.py","file_url":"https://github.com/dailenson/DiffBrush/blob/HEAD/models/unet.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":"a527744b4c918a23"}},{"code_sha256_prefix":"7f426ee49ae356e0","entry":"QKVAttentionLegacy","repo":"dailenson/DiffBrush","repo_kind":"found_in_text","path":"models/unet.py","file_url":"https://github.com/dailenson/DiffBrush/blob/HEAD/models/unet.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":"7f426ee49ae356e0"}},{"code_sha256_prefix":"cc61b25b0388b42d","entry":"ResNet","repo":"dailenson/DiffBrush","repo_kind":"found_in_text","path":"models/unet.py","file_url":"https://github.com/dailenson/DiffBrush/blob/HEAD/models/unet.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":"cc61b25b0388b42d"}},{"code_sha256_prefix":"f827e7bcb16c1d75","entry":"Upsample","repo":"dailenson/DiffBrush","repo_kind":"found_in_text","path":"models/unet.py","file_url":"https://github.com/dailenson/DiffBrush/blob/HEAD/models/unet.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":"f827e7bcb16c1d75"}},{"code_sha256_prefix":"1b261a79cdace383","entry":"timestep_embedding","repo":"dailenson/DiffBrush","repo_kind":"found_in_text","path":"models/unet.py","file_url":"https://github.com/dailenson/DiffBrush/blob/HEAD/models/unet.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"1b261a79cdace383"}},{"code_sha256_prefix":"5e204acfe6ae38ac","entry":"AttentionBlock","repo":"dailenson/DiffBrush","repo_kind":"found_in_text","path":"models/unet.py","file_url":"https://github.com/dailenson/DiffBrush/blob/HEAD/models/unet.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"5e204acfe6ae38ac"}},{"code_sha256_prefix":"4dab4ad094e29ef2","entry":"Mix_TR","repo":"dailenson/DiffBrush","repo_kind":"found_in_text","path":"models/unet.py","file_url":"https://github.com/dailenson/DiffBrush/blob/HEAD/models/unet.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"4dab4ad094e29ef2"}},{"code_sha256_prefix":"9d2fcaf8335c2210","entry":"ResBlock","repo":"dailenson/DiffBrush","repo_kind":"found_in_text","path":"models/unet.py","file_url":"https://github.com/dailenson/DiffBrush/blob/HEAD/models/unet.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"9d2fcaf8335c2210"}},{"code_sha256_prefix":"a0fe4952c73f4e10","entry":"SpatialTransformer","repo":"dailenson/DiffBrush","repo_kind":"found_in_text","path":"models/unet.py","file_url":"https://github.com/dailenson/DiffBrush/blob/HEAD/models/unet.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"a0fe4952c73f4e10"}},{"code_sha256_prefix":"6f183b4bfe4ad68f","entry":"TimestepBlock","repo":"dailenson/DiffBrush","repo_kind":"found_in_text","path":"models/unet.py","file_url":"https://github.com/dailenson/DiffBrush/blob/HEAD/models/unet.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"6f183b4bfe4ad68f"}},{"code_sha256_prefix":"661d22c736946198","entry":"TimestepEmbedSequential","repo":"dailenson/DiffBrush","repo_kind":"found_in_text","path":"models/unet.py","file_url":"https://github.com/dailenson/DiffBrush/blob/HEAD/models/unet.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"661d22c736946198"}},{"code_sha256_prefix":"3761e7a226193538","entry":"UNetModel","repo":"dailenson/DiffBrush","repo_kind":"found_in_text","path":"models/unet.py","file_url":"https://github.com/dailenson/DiffBrush/blob/HEAD/models/unet.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"3761e7a226193538"}},{"code_sha256_prefix":"06599f1e1f23a978","entry":"checkpoint","repo":"dailenson/DiffBrush","repo_kind":"found_in_text","path":"models/unet.py","file_url":"https://github.com/dailenson/DiffBrush/blob/HEAD/models/unet.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"06599f1e1f23a978"}},{"code_sha256_prefix":"d147ee9b766a6934","entry":"count_flops_attn","repo":"dailenson/DiffBrush","repo_kind":"found_in_text","path":"models/unet.py","file_url":"https://github.com/dailenson/DiffBrush/blob/HEAD/models/unet.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d147ee9b766a6934"}}]},"arxiv_metadata":{"licence":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)","fields":["title","abstract","authors","date"],"primary_category":"cs.CV","source":"arxiv_api"},"syntology_extracted_results":null}