[졸업 프로젝트] 전체적인 구상도
정승우
할 거
문제 정의
간단히 정리하면 ppt나 pptx를 RAG로 학습시키기 용이하게 텍스트로 변환하는 것이다
요구하는 내용은 다음과 같다.
- 사진에 있는 table과 plaintext를 마크다운으로 추출하기
- 1번이 아닌 사진이라면, 간단한 description을 출력할 것
ppt와 pptx가 무엇인가(진행 중)
그 전에 앞서 위 파일 확장자에 대해 이해할 필요가 있다.
일단 ppt는 바이너리 파일 + CFB 포맷이고, pptx는 OOXML 포맷이다.
우리 문제에서 문제가 될 만한 부분은 결국 이미지인데, 아마 파이프라인에서 ppt를 전부 pptx로 변환하여 문제를 단순화할 때 ppt에서의 여러 구성요소(표, 도형 등)이 사진으로 변할 가능성이 존재한다.
일단 이정도까지만 찾아보고 더 자세한 구조는 아래 페이지를 참고해야함(안봄)
https://www.loc.gov/preservation/digital/formats/fdd/fdd000511.shtml
https://learn.microsoft.com/ko-kr/openspecs/office_file_formats/ms-ppt/6be79dde-33c1-4c1b-8ccc-4b2301c08662
https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-cfb/53989ce4-7b05-4f8d-829b-d08d6148375b
https://www.loc.gov/preservation/digital/formats/fdd/fdd000399.shtml
https://ecma-international.org/publications-and-standards/standards/ecma-376/
https://support.microsoft.com/en-us/office/about-compatibility-mode-in-powerpoint-aa6983bb-7858-40c5-bcc8-756faa7d29b0
ppt2pptx open source
MS Office의 공식 기능을 이용하여 변환을 수행한다.
문제점으로는 폰트가 깨질 수 있지만 어차피 마크다운이라 상관없다
예제) 아래 코드는 PowerPoint를 설치해 둔 Windows에서 PowerShell로 PowerPoint를 조용히 띄워서
.SaveAs로 pptx로 저장시키는 방식이다.공식 지원 메서드이다.
https://learn.microsoft.com/en-us/office/vba/api/powerpoint.presentation.saveas
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
$in = "C:\ppt\in" $out = "C:\ppt\out" New-Item -ItemType Directory -Force -Path $out | Out-Null $ppt = New-Object -ComObject PowerPoint.Application $ppt.Visible = [Microsoft.Office.Core.MsoTriState]::msoFalse Get-ChildItem $in -Filter *.ppt | ForEach-Object { $src = $_.FullName $dst = Join-Path $out ($_.BaseName + ".pptx") $pres = $ppt.Presentations.Open($src, $true, $true, $false) # ReadOnly, Untitled, WithWindow # 24 = ppSaveAsOpenXMLPresentation (.pptx) (일반적으로 이 값이 .pptx) $pres.SaveAs($dst, 24) $pres.Close() } $ppt.Quit() [System.Runtime.InteropServices.Marshal]::ReleaseComObject($ppt) | Out-Null [GC]::Collect() [GC]::WaitForPendingFinalizers()
물론, 다른 오픈소스 또한 존재하는데 ex) soffice. 위 방식이 된다면 굳이? 해야되나 싶다.
pptx2md open source(진행 중)
https://github.com/ssine/pptx2md
이전에 ppt 2개 정도를 예제로 돌려보았을 때 어느정도 준수한 성능을 얻었다.
이 오픈소스에서 어찌보면 가장 중요한 부분은 python-ppt open source를 내부적으로 이용한다는 것이다,
따라서 이에 대해 공부해야 할 가능성도 존재한다.
생각해야 할 부분은 다음과 같다.
- 위의 오픈소스가 사진을 100% 추출 가능한지
- 내부적인 파이프라인 이해
- pptx의 구성 요소를 어떻게 잘 버리는지.
OCR open source + description(진행 중)
여러 가지 방법론이 존재할 수 있다고 생각한다.
여러가지 드는 생각은
- 그냥 잘해주는 api찾아서 진행하기(보통 LLM쪽 API)
- 중간 과정 JSON을 해주는 api가 많아 보여서 JSON → Markdown을 해야할 수도 있음(성능 측정 필요)
Mathpix
Azure Document, Google Document, …
결국 성능 측정을 해보려면 직접 해보는 것이 중요하다.
파이프라인 구상도
따라서 정리하면 다음과 같다.
ppt → pptx → markdown with non-OCRed photos → markdown with OCRed photos
Complex Table Problem(진행 중)
PPTX는 테이블 안의 테이블 구조를 표현할 수 있다.
하지만, 마크다운은 테이블 안의 테이블을 표현 불가능하다.
이러한 구조를 지키기 위해서는 JSON같은 추가적인 도구가 필요하나.
기업에서 요구하는 결과는 순수한 마크다운 파일이므로 이러한 구조적인 문제를 해결할 생각도 해야한다.