{"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/scrabblegan-semi-supervised-varying-length","title":"ScrabbleGAN: Semi-Supervised Varying Length Handwritten Text Generation","arxiv_id":"2003.10557","date":"2020-03-23","proceeding":"CVPR 2020 6","authors":["Sharon Fogel","Hadar Averbuch-Elor","Sarel Cohen","Shai Mazor","Roee Litman"],"abstract":"Optical character recognition (OCR) systems performance have improved significantly in the deep learning era. This is especially true for handwritten text recognition (HTR), where each author has a unique style, unlike printed text, where the variation is smaller by design. That said, deep learning based HTR is limited, as in every other task, by the number of training examples. Gathering data is a challenging and costly task, and even more so, the labeling task that follows, of which we focus here. One possible approach to reduce the burden of data annotation is semi-supervised learning. Semi supervised methods use, in addition to labeled data, some unlabeled samples to improve performance, compared to fully supervised ones. Consequently, such methods may adapt to unseen images during test time. We present ScrabbleGAN, a semi-supervised approach to synthesize handwritten text images that are versatile both in style and lexicon. ScrabbleGAN relies on a novel generative model which can generate images of words with an arbitrary length. We show how to operate our approach in a semi-supervised manner, enjoying the aforementioned benefits such as performance boost over state of the art supervised HTR. Furthermore, our generator can manipulate the resulting text style. This allows us to change, for instance, whether the text is cursive, or how thin is the pen stroke.","url_abs":"https://arxiv.org/abs/2003.10557v1","url_pdf":"https://arxiv.org/pdf/2003.10557v1.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":"scrabblegan-semi-supervised-varying-length","repo_url":"https://github.com/Nikolai10/scrabble-gan","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"scrabblegan-semi-supervised-varying-length","repo_url":"https://github.com/arshjot/ScrabbleGAN","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"scrabblegan-semi-supervised-varying-length","repo_url":"https://github.com/amzn/convolutional-handwriting-gan","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"domain-adaptation","task_name":"Domain Adaptation"},{"task_slug":"htr","task_name":"HTR"},{"task_slug":"handwriting-recognition","task_name":"Handwriting Recognition"},{"task_slug":"handwriting-generation","task_name":"Handwriting generation"},{"task_slug":"handwritten-text-recognition","task_name":"Handwritten Text Recognition"},{"task_slug":"optical-character-recognition","task_name":"Optical Character Recognition"},{"task_slug":"optical-character-recognition","task_name":"Optical Character Recognition (OCR)"},{"task_slug":"text-generation","task_name":"Text Generation"}],"methods":[{"method_slug":"gan-hinge-loss","method_name":"GAN Hinge Loss"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2003.10557","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2003.10557"}},"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/amzn/convolutional-handwriting-gan","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/Nikolai10/scrabble-gan","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/arshjot/ScrabbleGAN","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran_draft_wrong":2,"unverified":13},"by_repo_kind":{"listed":{"samples":15,"ran":2,"repositories":3}},"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":"62a8cdfdb51ec275","entry":"get_scheduler","repo":"amzn/convolutional-handwriting-gan","repo_kind":"listed","path":"models/networks.py","file_url":"https://github.com/amzn/convolutional-handwriting-gan/blob/HEAD/models/networks.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"62a8cdfdb51ec275"}},{"code_sha256_prefix":"c41836f3e51fa8f1","entry":"gram_schmidt","repo":"amzn/convolutional-handwriting-gan","repo_kind":"listed","path":"models/BigGAN_layers.py","file_url":"https://github.com/amzn/convolutional-handwriting-gan/blob/HEAD/models/BigGAN_layers.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"c41836f3e51fa8f1"}},{"code_sha256_prefix":"999dd6faac5c1ade","entry":"D_arch","repo":"amzn/convolutional-handwriting-gan","repo_kind":"listed","path":"models/BigGAN_networks.py","file_url":"https://github.com/amzn/convolutional-handwriting-gan/blob/HEAD/models/BigGAN_networks.py","link_basis":"harvester_set","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":"999dd6faac5c1ade"}},{"code_sha256_prefix":"d1231aefd93679b5","entry":"D_arch","repo":"arshjot/ScrabbleGAN","repo_kind":"listed","path":"models/model_utils/BigGAN.py","file_url":"https://github.com/arshjot/ScrabbleGAN/blob/HEAD/models/model_utils/BigGAN.py","link_basis":"harvester_set","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":"d1231aefd93679b5"}},{"code_sha256_prefix":"eeee154bc306d46b","entry":"G_arch","repo":"amzn/convolutional-handwriting-gan","repo_kind":"listed","path":"models/BigGAN_networks.py","file_url":"https://github.com/amzn/convolutional-handwriting-gan/blob/HEAD/models/BigGAN_networks.py","link_basis":"harvester_set","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":"eeee154bc306d46b"}},{"code_sha256_prefix":"2da72fe9722173cd","entry":"G_arch","repo":"arshjot/ScrabbleGAN","repo_kind":"listed","path":"models/model_utils/BigGAN.py","file_url":"https://github.com/arshjot/ScrabbleGAN/blob/HEAD/models/model_utils/BigGAN.py","link_basis":"harvester_set","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":"2da72fe9722173cd"}},{"code_sha256_prefix":"d6fd5733dc2c7ede","entry":"apply_gradient_balancing","repo":"Nikolai10/scrabble-gan","repo_kind":"listed","path":"src/bigacgan/data_utils.py","file_url":"https://github.com/Nikolai10/scrabble-gan/blob/HEAD/src/bigacgan/data_utils.py","link_basis":"harvester_set","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":"d6fd5733dc2c7ede"}},{"code_sha256_prefix":"97725ea858bf15a5","entry":"hinge","repo":"Nikolai10/scrabble-gan","repo_kind":"listed","path":"src/bigacgan/net_loss.py","file_url":"https://github.com/Nikolai10/scrabble-gan/blob/HEAD/src/bigacgan/net_loss.py","link_basis":"harvester_set","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":"97725ea858bf15a5"}},{"code_sha256_prefix":"045bfa7854c06fc4","entry":"img_resize","repo":"arshjot/ScrabbleGAN","repo_kind":"listed","path":"calculate_metrics.py","file_url":"https://github.com/arshjot/ScrabbleGAN/blob/HEAD/calculate_metrics.py","link_basis":"harvester_set","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":"045bfa7854c06fc4"}},{"code_sha256_prefix":"08150e4642604291","entry":"load_random_word_list","repo":"Nikolai10/scrabble-gan","repo_kind":"listed","path":"src/bigacgan/data_utils.py","file_url":"https://github.com/Nikolai10/scrabble-gan/blob/HEAD/src/bigacgan/data_utils.py","link_basis":"harvester_set","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":"08150e4642604291"}},{"code_sha256_prefix":"a3d3f3a76eaa05e3","entry":"make_recognizer","repo":"Nikolai10/scrabble-gan","repo_kind":"listed","path":"src/bigacgan/net_architecture.py","file_url":"https://github.com/Nikolai10/scrabble-gan/blob/HEAD/src/bigacgan/net_architecture.py","link_basis":"harvester_set","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":"a3d3f3a76eaa05e3"}},{"code_sha256_prefix":"1af34c0920737315","entry":"not_saturating","repo":"Nikolai10/scrabble-gan","repo_kind":"listed","path":"src/bigacgan/net_loss.py","file_url":"https://github.com/Nikolai10/scrabble-gan/blob/HEAD/src/bigacgan/net_loss.py","link_basis":"harvester_set","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":"1af34c0920737315"}},{"code_sha256_prefix":"28d3a35157f2916d","entry":"power_iteration","repo":"amzn/convolutional-handwriting-gan","repo_kind":"listed","path":"models/BigGAN_layers.py","file_url":"https://github.com/amzn/convolutional-handwriting-gan/blob/HEAD/models/BigGAN_layers.py","link_basis":"harvester_set","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":"28d3a35157f2916d"}},{"code_sha256_prefix":"4015ab1f3ab9b881","entry":"proj","repo":"amzn/convolutional-handwriting-gan","repo_kind":"listed","path":"models/BigGAN_layers.py","file_url":"https://github.com/amzn/convolutional-handwriting-gan/blob/HEAD/models/BigGAN_layers.py","link_basis":"harvester_set","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":"4015ab1f3ab9b881"}},{"code_sha256_prefix":"363120d7969455e6","entry":"spectral_norm","repo":"Nikolai10/scrabble-gan","repo_kind":"listed","path":"src/bigacgan/arch_ops.py","file_url":"https://github.com/Nikolai10/scrabble-gan/blob/HEAD/src/bigacgan/arch_ops.py","link_basis":"harvester_set","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":"363120d7969455e6"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}