(ppt_folder: str, text_model: BGEM3FlagModel, image_model)
| 160 | |
| 161 | |
| 162 | def prepare_ppt_folder(ppt_folder: str, text_model: BGEM3FlagModel, image_model): |
| 163 | if pexists(ppt_folder + "/source.pptx") or not older_than( |
| 164 | ppt_folder + "/original.pptx" |
| 165 | ): |
| 166 | return |
| 167 | config = Config(rundir=ppt_folder, debug=False) |
| 168 | presentation = Presentation.from_file(ppt_folder + "/original.pptx", config=config) |
| 169 | if not os.path.exists(pjoin(ppt_folder, "original_slides")): |
| 170 | ppt_to_images(presentation.source_file, pjoin(ppt_folder, "original_slides")) |
| 171 | ppt_image_folder = pjoin(ppt_folder, "source_slides") |
| 172 | shutil.rmtree(ppt_image_folder, ignore_errors=True) |
| 173 | shutil.copytree(pjoin(ppt_folder, "original_slides"), ppt_image_folder) |
| 174 | |
| 175 | removed_slides = prs_dedup(presentation, text_model) |
| 176 | for slide in [slide for slide in presentation.slides if I_dont_want_to_filter_slide(slide)]: |
| 177 | removed_slides.append(slide) |
| 178 | presentation.slides.remove(slide) |
| 179 | |
| 180 | for slide in removed_slides: |
| 181 | os.remove(pjoin(ppt_image_folder, f"slide_{slide.real_idx:04d}.jpg")) |
| 182 | for err_idx, _ in presentation.error_history: |
| 183 | os.remove(pjoin(ppt_image_folder, f"slide_{err_idx:04d}.jpg")) |
| 184 | assert len(presentation) == len( |
| 185 | [i for i in os.listdir(ppt_image_folder) if i.endswith(".jpg")] |
| 186 | ) |
| 187 | for i, slide in enumerate(presentation.slides, 1): |
| 188 | slide.slide_idx = i |
| 189 | os.rename( |
| 190 | pjoin(ppt_image_folder, f"slide_{slide.real_idx:04d}.jpg"), |
| 191 | pjoin(ppt_image_folder, f"slide_{slide.slide_idx:04d}.jpg"), |
| 192 | ) |
| 193 | |
| 194 | check_consistency(presentation.slides, ppt_folder, image_model) |
| 195 | ImageLabler(presentation, config).caption_images() |
| 196 | presentation.save(pjoin(ppt_folder, "source.pptx")) |
| 197 | presentation.save(pjoin(ppt_folder, "template.pptx"), layout_only=True) |
| 198 | ppt_to_images( |
| 199 | pjoin(ppt_folder, "template.pptx"), |
| 200 | pjoin(ppt_folder, "template_images"), |
| 201 | ) |
| 202 | os.remove(pjoin(ppt_folder, "template.pptx")) |
| 203 | |
| 204 | |
| 205 | def prepare_induction(induct_id: int, wait: bool = False): |
no test coverage detected