def pdf_qa_baseline( pdf_path: str, question: str, top_k: int = 3, annotate_pdf: str | None = None, ): # 1. Parsing line_df = fitz_pdf_to_line_df(pdf_path) # 2. Retrieval page_df = embed_page_df(build_page_df(line_df)) _, filtered = retrieve_pages(page_df, line_df, question, top_k) # 3. Generation answer = llm_answer_with_evidence(question, filtered) # 4. Optional highlighting on the source PDF if annotate_pdf is not None: passage = passage_lines_df_from_answer(line_df, answer) bboxes = passage_bbox_by_page(passage) draw_passage_rectangles(pdf_path, bboxes, annotate_pdf) return answer