Spaces:
Build error
Build error
Ilia Tambovtsev commited on
Commit ·
764a794
1
Parent(s): 26234d7
refactor: change project structure
Browse files- src/__init__.py +7 -0
- src/chains/__init__.py +13 -0
- src/{pdf_utils → chains}/chain_funcs.py +0 -0
- src/{pdf_utils → chains}/chains.py +3 -10
- src/{pdf_utils → chains}/pipelines.py +1 -1
- src/{prompts → chains/prompts}/vit_describe_image_ru_brief.txt +0 -0
- src/{prompts → chains/prompts}/vit_describe_image_ru_detailed.txt +4 -4
- src/{prompts → chains/prompts}/vit_describe_slide_instruction.txt +0 -0
- src/config/navigator.py +2 -1
- src/processing/__init__.py +2 -0
- src/{pdf_utils → processing}/image_utlis.py +0 -0
- src/{pdf_utils/pdf2image.py → processing/pdf_utils.py} +0 -0
src/__init__.py
CHANGED
|
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from processing import pdf2image, image2base64
|
| 2 |
+
from config import (
|
| 3 |
+
Config,
|
| 4 |
+
ModelConfig,
|
| 5 |
+
Navigator,
|
| 6 |
+
MultilineWrapper
|
| 7 |
+
)
|
src/chains/__init__.py
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from pipelines import (
|
| 2 |
+
SingleSlidePipeline,
|
| 3 |
+
PresentationPipeline,
|
| 4 |
+
PresentationAnalysis,
|
| 5 |
+
SlideAnalysis
|
| 6 |
+
)
|
| 7 |
+
|
| 8 |
+
from chains import (
|
| 9 |
+
LoadPageChain,
|
| 10 |
+
Page2ImageChain,
|
| 11 |
+
ImageEncodeChain,
|
| 12 |
+
VisionAnalysisChain
|
| 13 |
+
)
|
src/{pdf_utils → chains}/chain_funcs.py
RENAMED
|
File without changes
|
src/{pdf_utils → chains}/chains.py
RENAMED
|
@@ -15,10 +15,10 @@ import fitz
|
|
| 15 |
|
| 16 |
from io import BytesIO
|
| 17 |
from PIL import Image
|
| 18 |
-
from src.
|
| 19 |
|
| 20 |
from src.config import Navigator
|
| 21 |
-
from src.
|
| 22 |
|
| 23 |
logger = logging.getLogger(__name__)
|
| 24 |
|
|
@@ -171,14 +171,7 @@ class ImageEncodeChain(Chain):
|
|
| 171 |
Dictionary with base64 encoded image string
|
| 172 |
"""
|
| 173 |
image: Image.Image = inputs["image"]
|
| 174 |
-
|
| 175 |
-
# Save image to bytes buffer
|
| 176 |
-
buffer = BytesIO()
|
| 177 |
-
image.save(buffer, format="PNG")
|
| 178 |
-
|
| 179 |
-
# Encode to base64
|
| 180 |
-
encoded = base64.b64encode(buffer.getvalue()).decode("utf-8")
|
| 181 |
-
|
| 182 |
return dict(image_encoded=encoded)
|
| 183 |
|
| 184 |
|
|
|
|
| 15 |
|
| 16 |
from io import BytesIO
|
| 17 |
from PIL import Image
|
| 18 |
+
from src.chains.chain_funcs import get_param_or_default
|
| 19 |
|
| 20 |
from src.config import Navigator
|
| 21 |
+
from src.processing import page2image, image2base64
|
| 22 |
|
| 23 |
logger = logging.getLogger(__name__)
|
| 24 |
|
|
|
|
| 171 |
Dictionary with base64 encoded image string
|
| 172 |
"""
|
| 173 |
image: Image.Image = inputs["image"]
|
| 174 |
+
encoded = image2base64(image)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 175 |
return dict(image_encoded=encoded)
|
| 176 |
|
| 177 |
|
src/{pdf_utils → chains}/pipelines.py
RENAMED
|
@@ -10,7 +10,7 @@ import fitz
|
|
| 10 |
from langchain_openai.chat_models import ChatOpenAI
|
| 11 |
from langchain.chains.base import Chain
|
| 12 |
|
| 13 |
-
from src.
|
| 14 |
LoadPageChain,
|
| 15 |
Page2ImageChain,
|
| 16 |
ImageEncodeChain,
|
|
|
|
| 10 |
from langchain_openai.chat_models import ChatOpenAI
|
| 11 |
from langchain.chains.base import Chain
|
| 12 |
|
| 13 |
+
from src.chains.chains import (
|
| 14 |
LoadPageChain,
|
| 15 |
Page2ImageChain,
|
| 16 |
ImageEncodeChain,
|
src/{prompts → chains/prompts}/vit_describe_image_ru_brief.txt
RENAMED
|
File without changes
|
src/{prompts → chains/prompts}/vit_describe_image_ru_detailed.txt
RENAMED
|
@@ -22,7 +22,7 @@
|
|
| 22 |
- Формулы (математические выражения)
|
| 23 |
- Код (язык программирования, листинги)
|
| 24 |
- Цитаты
|
| 25 |
-
- Ссылки (URLs, референсы)
|
| 26 |
- Аббревиатуры и специальные термины
|
| 27 |
|
| 28 |
Стилистика:
|
|
@@ -32,13 +32,13 @@
|
|
| 32 |
- Расположение текста (центрирование, колонки)
|
| 33 |
</examples>
|
| 34 |
|
| 35 |
-
Не ограничивайтесь этим списком. Если на слайде есть другие важные текстовые элементы, опишите их тоже. Если каких-то элементов нет - пропустите их.
|
| 36 |
Не пишите об отсутствующих элементах!
|
| 37 |
|
| 38 |
Не суммаризируйте основной текст. Передавайте его полностью.
|
| 39 |
|
| 40 |
# Визуальное содержание
|
| 41 |
-
Опишите все визуальные элементы. Вот примеры визуальных элементов, на которые нужно обращать внимание:
|
| 42 |
|
| 43 |
<examples>
|
| 44 |
Данные и графики:
|
|
@@ -70,6 +70,6 @@
|
|
| 70 |
- Форматирование ячеек
|
| 71 |
</examples>
|
| 72 |
|
| 73 |
-
Не ограничивайтесь этим списком. Если на слайде есть другие важные визуальные элементы, опишите их тоже. Если каких-то элементов нет - пропустите их.
|
| 74 |
Не пишите об отсутствующих элементах!
|
| 75 |
</description>
|
|
|
|
| 22 |
- Формулы (математические выражения)
|
| 23 |
- Код (язык программирования, листинги)
|
| 24 |
- Цитаты
|
| 25 |
+
- Ссылки (URLs, референсы, источники)
|
| 26 |
- Аббревиатуры и специальные термины
|
| 27 |
|
| 28 |
Стилистика:
|
|
|
|
| 32 |
- Расположение текста (центрирование, колонки)
|
| 33 |
</examples>
|
| 34 |
|
| 35 |
+
Не ограничивайтесь этим списком. Если на слайде есть другие важные текстовые элементы, опишите их тоже. Если каких-то элементов нет - пропустите их.
|
| 36 |
Не пишите об отсутствующих элементах!
|
| 37 |
|
| 38 |
Не суммаризируйте основной текст. Передавайте его полностью.
|
| 39 |
|
| 40 |
# Визуальное содержание
|
| 41 |
+
Опишите все визуальные элементы. Вот примеры визуальных элементов, на которые нужно обращать внимание:
|
| 42 |
|
| 43 |
<examples>
|
| 44 |
Данные и графики:
|
|
|
|
| 70 |
- Форматирование ячеек
|
| 71 |
</examples>
|
| 72 |
|
| 73 |
+
Не ограничивайтесь этим списком. Если на слайде есть другие важные визуальные элементы, опишите их тоже. Если каких-то элементов нет - пропустите их.
|
| 74 |
Не пишите об отсутствующих элементах!
|
| 75 |
</description>
|
src/{prompts → chains/prompts}/vit_describe_slide_instruction.txt
RENAMED
|
File without changes
|
src/config/navigator.py
CHANGED
|
@@ -18,7 +18,8 @@ class Navigator:
|
|
| 18 |
|
| 19 |
# src paths
|
| 20 |
self.src = self.root / "src"
|
| 21 |
-
self.
|
|
|
|
| 22 |
|
| 23 |
# Create directories if they don't exist
|
| 24 |
for path in [self.interim, self.processed]:
|
|
|
|
| 18 |
|
| 19 |
# src paths
|
| 20 |
self.src = self.root / "src"
|
| 21 |
+
self.chains = self.src / "chains"
|
| 22 |
+
self.prompts = self.chains / "prompts"
|
| 23 |
|
| 24 |
# Create directories if they don't exist
|
| 25 |
for path in [self.interim, self.processed]:
|
src/processing/__init__.py
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from src.processing.image_utlis import image2base64
|
| 2 |
+
from src.processing.pdf_utils import pdf2image
|
src/{pdf_utils → processing}/image_utlis.py
RENAMED
|
File without changes
|
src/{pdf_utils/pdf2image.py → processing/pdf_utils.py}
RENAMED
|
File without changes
|