
번역 API 선택지로 LLMs가 추가되었습니다. 권장 모델: Doubao, Qwen, deepseek v3, gpt4-o-mini입니다. 색상 공간 오류는 PDF 파일의 흰색 영역을 채우는 것으로 해결할 수 있습니다. 기존 text to text 번역 API는 삭제되었습니다.
또한, arXiv 검색 기능과 arXiv 논문의 LaTeX 번역 후 렌더링 추가를 고려 중입니다.
<img src="https://github.com/CBIhalsen/PolyglotPDF/blob/main/static/page1.png?raw=true" width="40%" height="20%" style="margin-right: 20px;">
<img src="https://github.com/CBIhalsen/PolyglotPDF/blob/main/static/page2.jpeg?raw=true" width="40%" height="20%">
<img src="https://github.com/CBIhalsen/PolyglotPDF/blob/main/static/page3.png?raw=true" width="40%" height="20%" style="margin-right: 20px;">
<img src="https://github.com/CBIhalsen/PolyglotPDF/blob/main/static/page4.png?raw=true" width="40%" height="20%">
화산 엔진 플랫폼을 통한 신청: - 신청 주소: 화산 엔진-Doubao - 지원 모델: Doubao, Deepseek 시리즈 모델
알리바바 클라우드 플랫폼을 통한 신청: - 신청 주소: 알리바바 클라우드-통의천문 - 지원 모델: Qwen-Max, Qwen-Plus 등 시리즈 모델
PolyglotPDF는 특수 기술을 사용하여 PDF 문서 내의 텍스트, 표, 수식을 초고속으로 인식하는 선진적인 PDF 처리 도구입니다. 보통 1초 이내에 처리를 완료하며, OCR 기능과 완벽한 레이아웃 유지 번역 기능을 지원합니다. 문서 전체의 번역은 보통 10초 이내에 완료됩니다(번역 API 제공업체에 따라 속도가 다릅니다).
표준 설치
git clone https://github.com/CBIhalsen/Polyglotpdf.git
cd polyglotpdf
pip install -r requirements.txt
config.json에서 API 키 설정. alicloud 번역 API 사용은 권장되지 않습니다.
애플리케이션 실행:
python app.py
http://127.0.0.1:8000 열기Docker 사용 방법
영구 디렉토리 설정 없이 PolyglotPDF를 빠르게 테스트하려면:
# 먼저 이미지 가져오기
docker pull 2207397265/polyglotpdf:latest
# 볼륨 마운트 없이 컨테이너 실행(컨테이너 삭제 시 데이터 손실)
docker run -d -p 12226:12226 --name polyglotpdf 2207397265/polyglotpdf:latest
이것은 PolyglotPDF를 시도하는 가장 빠른 방법이지만, 컨테이너가 중지되면 업로드된 모든 PDF와 구성 변경 사항이 손실됩니다.
# 필요한 디렉토리 생성
mkdir -p config fonts static/original static/target static/merged_pdf
# 설정 파일 생성
nano config/config.json # 또는 원하는 텍스트 편집기 사용
# 프로젝트의 설정 템플릿을 이 파일에 복사
# API 키 등의 설정 정보를 입력하세요
# 권한 설정
chmod -R 755 config fonts static
다음 명령을 사용하여 PolyglotPDF Docker 이미지를 가져와 실행:
# 이미지 가져오기
docker pull 2207397265/polyglotpdf:latest
# 컨테이너 실행
docker run -d -p 12226:12226 --name polyglotpdf \
-v ./config/config.json:/app/config.json \
-v ./fonts:/app/fonts \
-v ./static/original:/app/static/original \
-v ./static/target:/app/static/target \
-v ./static/merged_pdf:/app/static/merged_pdf \
2207397265/polyglotpdf:latest
컨테이너가 시작된 후, 브라우저에서 열기:
http://localhost:12226
docker-compose.yml 파일 생성:
version: '3'
services:
polyglotpdf:
image: 2207397265/polyglotpdf:latest
ports:
- "12226:12226"
volumes:
- ./config.json:/app/config.json # 설정 파일
- ./fonts:/app/fonts # 폰트 파일
- ./static/original:/app/static/original # 원본 PDF
- ./static/target:/app/static/target # 번역된 PDF
- ./static/merged_pdf:/app/static/merged_pdf # 병합된 PDF
restart: unless-stopped
그리고 실행:
docker-compose up -d
# 컨테이너 중지
docker stop polyglotpdf
# 컨테이너 재시작
docker restart polyglotpdf
# 로그 확인
docker logs polyglotpdf
본 프로젝트는 PyMuPDF의 강력한 PDF 처리와 레이아웃 유지 기능의 혜택을 받았습니다.
code=4: only Gray, RGB, and CMYK colorspaces supported현재 main.py의 start 함수에서는 기본 폰트 설정으로 텍스트를 삽입합니다:
# 현재 설정
css=f"* {{font-family:{get_font_by_language(self.target_language)};font-size:auto;color: #111111 ;font-weight:normal;}}"
폰트 표시는 다음 방법으로 최적화할 수 있습니다:
# 사용자 정의 폰트 스타일
css=f"""* {{
font-family: {get_font_by_language(self.target_language)};
font-size: auto;
color: #111111;
font-weight: normal;
letter-spacing: 0.5px; # 자간 조정
line-height: 1.5; # 행간 조정
}}"""
fonts 디렉토리에 배치@font-face를 사용하여 사용자 정의 폰트 선언css=f"""
@font-face {{
font-family: 'CustomFont';
src: url('fonts/your-font.ttf') format('truetype');
}}
* {{
font-family: 'CustomFont', {get_font_by_language(self.target_language)};
font-size: auto;
font-weight: normal;
}}
"""
본 프로젝트는 Adobe Acrobat DC의 PDF 편집과 유사한 기본 원리를 채택하고, PyMuPDF를 사용하여 PDF 텍스트 블록을 인식하고 처리합니다:
# 페이지에서 텍스트 블록 가져오기
blocks = page.get_text("dict")["blocks"]
# 각 텍스트 블록 처리
for block in blocks:
if block.get("type") == 0: # 텍스트 블록
bbox = block["bbox"] # 텍스트 블록의 경계 상자 가져오기
text = ""
font_info = None
# 텍스트와 폰트 정보 수집
for line in block["lines"]:
for span in line["spans"]:
text += span["text"] + " "
이 방법으로 PDF 텍스트 블록을 직접 처리하여 원래 레이아웃을 유지한 채 효율적인 텍스트 추출과 수정을 실현합니다.
수식, 표, 페이지 재구성 등의 복잡한 AI 인식은 수행하지 않음
복잡한 처리를 피하는 이유:
온라인 서비스의 신속한 응답에 부적합
프로젝트 위치:
최적의 성능과 비용 비율 추구
성능:
$ claude mcp add PolyglotPDF \
-- python -m otcore.mcp_server <graph>