File size: 1,784 Bytes
459372e
4b3f51e
cce0884
 
4b3f51e
 
cce0884
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4b3f51e
 
459372e
 
cce0884
 
459372e
4b3f51e
6afedff
 
4b3f51e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import gradio as gr
import tempfile
import os
import subprocess

def process_files(pdf_file, word_file):
    # 1. Save the uploaded files to temp
    temp_dir = tempfile.mkdtemp()
    pdf_path = os.path.join(temp_dir, "input.pdf")
    word_path = os.path.join(temp_dir, "input.docx")
    with open(pdf_path, "wb") as f:
        f.write(pdf_file.read())
    with open(word_path, "wb") as f:
        f.write(word_file.read())

    # 2. Step 1: Extract PDF data to txt
    pdf_txt_path = os.path.join(temp_dir, "pdf_data.txt")
    subprocess.run(["python", "extract_pdf_data.py", pdf_path, pdf_txt_path], check=True)

    # 3. Step 2: Extract red text from Word to JSON
    word_json_path = os.path.join(temp_dir, "word_data.json")
    subprocess.run(["python", "extract_red_text.py", word_path, word_json_path], check=True)

    # 4. Step 3: Update docx JSON with PDF txt, output updated JSON
    updated_json_path = os.path.join(temp_dir, "updated_word_data.json")
    subprocess.run([
        "python", "update_docx_with_pdf.py", word_json_path, pdf_txt_path, updated_json_path
    ], check=True)

    # 5. Step 4: Compare word file with updated JSON and update docx
    final_docx_path = os.path.join(temp_dir, "updated.docx")
    subprocess.run([
        "python", "updated_word.py", word_path, updated_json_path, final_docx_path
    ], check=True)

    # 6. Return final docx file
    return final_docx_path

gr.Interface(
    fn=process_files,
    inputs=[
        gr.File(label="Upload PDF File"),
        gr.File(label="Upload Word File")
    ],
    outputs=gr.File(label="Download Updated Word File"),
    title="Red Text Replacer",
    description="Upload a PDF and Word document. Red-colored text in the Word doc will be replaced by matching content from the PDF."
).launch()