{"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-2509-22940","title":"LLMs Behind the Scenes: Enabling Narrative Scene Illustration","arxiv_id":"2509.22940","date":"2025-09-26","proceeding":"EMNLP","authors":["Melissa Roemmele","John Joon Young Chung","Taewook Kim","Yuqian Sun","Alex Calderwood","Max Kreminski"],"abstract":"Generative AI has established the opportunity to readily transform content from one medium to another. This capability is especially powerful for storytelling, where visual illustrations can illuminate a story originally expressed in text. In this paper, we focus on the task of narrative scene illustration, which involves automatically generating an image depicting a scene in a story. Motivated by recent progress on text-to-image models, we consider a pipeline that uses LLMs as an interface for prompting text-to-image models to generate scene illustrations given raw story text. We apply variations of this pipeline to a prominent story corpus in order to synthesize illustrations for scenes in these stories. We conduct a human annotation task to obtain pairwise quality judgments for these illustrations. The outcome of this process is the SceneIllustrations dataset, which we release as a new resource for future work on cross-modal narrative transformation. Through our analysis of this dataset and experiments modeling illustration quality, we demonstrate that LLMs can effectively verbalize scene knowledge implicitly evoked by story text. Moreover, this capability is impactful for generating and evaluating illustrations.","url_abs":"https://arxiv.org/abs/2509.22940","url_pdf":"https://arxiv.org/pdf/2509.22940","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=2509.22940","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2509.22940"}},"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/roemmele/narrative-scene-illustration","reach":{"status":"ok"}}],"summary":{"unverified":16},"by_repo_kind":{"found_in_text":{"samples":16,"ran":0,"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":16,"samples":[{"code_sha256_prefix":"646306cc73e96bb9","entry":"compute_uncertainty_weighted_kappa","repo":"roemmele/narrative-scene-illustration","repo_kind":"found_in_text","path":"modules/analysis.py","file_url":"https://github.com/roemmele/narrative-scene-illustration/blob/HEAD/modules/analysis.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":"646306cc73e96bb9"}},{"code_sha256_prefix":"ddd8998aaffb7007","entry":"encode_image_from_url","repo":"roemmele/narrative-scene-illustration","repo_kind":"found_in_text","path":"modules/utils.py","file_url":"https://github.com/roemmele/narrative-scene-illustration/blob/HEAD/modules/utils.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":"ddd8998aaffb7007"}},{"code_sha256_prefix":"b3305d65dc320e75","entry":"encode_multimodal_prompt","repo":"roemmele/narrative-scene-illustration","repo_kind":"found_in_text","path":"modules/textgen.py","file_url":"https://github.com/roemmele/narrative-scene-illustration/blob/HEAD/modules/textgen.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":"b3305d65dc320e75"}},{"code_sha256_prefix":"a549b5a76ff978cb","entry":"filter_items","repo":"roemmele/narrative-scene-illustration","repo_kind":"found_in_text","path":"modules/utils.py","file_url":"https://github.com/roemmele/narrative-scene-illustration/blob/HEAD/modules/utils.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":"a549b5a76ff978cb"}},{"code_sha256_prefix":"a3794edd523e0c20","entry":"fragment2description","repo":"roemmele/narrative-scene-illustration","repo_kind":"found_in_text","path":"modules/pipeline.py","file_url":"https://github.com/roemmele/narrative-scene-illustration/blob/HEAD/modules/pipeline.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":"a3794edd523e0c20"}},{"code_sha256_prefix":"b5b18ff186677eb2","entry":"gather_ratings_from_google","repo":"roemmele/narrative-scene-illustration","repo_kind":"found_in_text","path":"modules/visualization.py","file_url":"https://github.com/roemmele/narrative-scene-illustration/blob/HEAD/modules/visualization.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":"b5b18ff186677eb2"}},{"code_sha256_prefix":"80454fe411a893e8","entry":"load_aligned_criteria","repo":"roemmele/narrative-scene-illustration","repo_kind":"found_in_text","path":"modules/analysis.py","file_url":"https://github.com/roemmele/narrative-scene-illustration/blob/HEAD/modules/analysis.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":"80454fe411a893e8"}},{"code_sha256_prefix":"82e0b7a6677a5e92","entry":"load_ratings","repo":"roemmele/narrative-scene-illustration","repo_kind":"found_in_text","path":"modules/analysis.py","file_url":"https://github.com/roemmele/narrative-scene-illustration/blob/HEAD/modules/analysis.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":"82e0b7a6677a5e92"}},{"code_sha256_prefix":"87efebd8bb92e5cd","entry":"load_sheet_as_dataframe","repo":"roemmele/narrative-scene-illustration","repo_kind":"found_in_text","path":"modules/data_logging.py","file_url":"https://github.com/roemmele/narrative-scene-illustration/blob/HEAD/modules/data_logging.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":"87efebd8bb92e5cd"}},{"code_sha256_prefix":"9d68ca3e2d68a697","entry":"postprocess_fn_for_fragment_illustration_evaluation_criteria_based_analysis_first","repo":"roemmele/narrative-scene-illustration","repo_kind":"found_in_text","path":"modules/textgen_postprocess.py","file_url":"https://github.com/roemmele/narrative-scene-illustration/blob/HEAD/modules/textgen_postprocess.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":"9d68ca3e2d68a697"}},{"code_sha256_prefix":"c8509301aa99067a","entry":"postprocess_fn_for_fragment_illustration_evaluation_criteria_based_analysis_first_emoji_scale","repo":"roemmele/narrative-scene-illustration","repo_kind":"found_in_text","path":"modules/textgen_postprocess.py","file_url":"https://github.com/roemmele/narrative-scene-illustration/blob/HEAD/modules/textgen_postprocess.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":"c8509301aa99067a"}},{"code_sha256_prefix":"a36566d3e71dd8d3","entry":"postprocess_fn_for_fragment_illustration_evaluation_criteria_based_analysis_first_include_maybe","repo":"roemmele/narrative-scene-illustration","repo_kind":"found_in_text","path":"modules/textgen_postprocess.py","file_url":"https://github.com/roemmele/narrative-scene-illustration/blob/HEAD/modules/textgen_postprocess.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":"a36566d3e71dd8d3"}},{"code_sha256_prefix":"ac1e0c6ba0e77e9b","entry":"render_multimodal_prompt","repo":"roemmele/narrative-scene-illustration","repo_kind":"found_in_text","path":"modules/textgen.py","file_url":"https://github.com/roemmele/narrative-scene-illustration/blob/HEAD/modules/textgen.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":"ac1e0c6ba0e77e9b"}},{"code_sha256_prefix":"717cb434dc7871e2","entry":"render_text_prompt","repo":"roemmele/narrative-scene-illustration","repo_kind":"found_in_text","path":"modules/textgen.py","file_url":"https://github.com/roemmele/narrative-scene-illustration/blob/HEAD/modules/textgen.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":"717cb434dc7871e2"}},{"code_sha256_prefix":"4d36bcf29a41016a","entry":"retrieve_prompt","repo":"roemmele/narrative-scene-illustration","repo_kind":"found_in_text","path":"modules/pipeline.py","file_url":"https://github.com/roemmele/narrative-scene-illustration/blob/HEAD/modules/pipeline.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":"4d36bcf29a41016a"}},{"code_sha256_prefix":"683f5fa724a12614","entry":"story2fragments","repo":"roemmele/narrative-scene-illustration","repo_kind":"found_in_text","path":"modules/pipeline.py","file_url":"https://github.com/roemmele/narrative-scene-illustration/blob/HEAD/modules/pipeline.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":"683f5fa724a12614"}}]},"arxiv_metadata":{"licence":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)","fields":["title","abstract","authors","date"],"primary_category":"cs.CL","source":"arxiv_api"},"syntology_extracted_results":null}