PDF 번역 작업을 넘기기 전, 성급하게 폰트를 바꾸기보다는 먼저 폰트를 확인해 보세요.
기본 글꼴 목록은 full=True에서 반환된 튜플과 길이가 다릅니다. 다음으로 처음 6개 항목을 읽은 다음 extract_font에서 반환된 글꼴 바이트가 비어 있는지 확인합니다. Base14 글꼴 참조는 글꼴이 프로그램에 포함되어 있음을 의미하지 않습니다. 하위 집합 글꼴도 오류로 간주되어서는 안 됩니다.
많은 사람들이 번역할 PDF를 받을 때 가장 먼저 생각하는 것은 바로 Siyuan Heibo나 Arial로 변경하는 것입니다. 이로 인해 전달 중에 문제가 발생하는 경우가 많습니다. 수학 기호가 사각형으로 표시되거나, 표 번호가 잘못 정렬되거나, 특정 리더에서 번역을 열 수 없는 등의 문제가 발생합니다. 이 문서는 PDF 번역 작업을 맡아야 하는 개발자와 문서 소유자를 위해 작성되었습니다. 읽고 나면 PyMuPDF를 사용하여 글꼴 목록을 작성하는 방법, 반환된 결과를 해석하는 방법, 코드 출력만으로는 도출할 수 없는 결론을 알게 됩니다.
글꼴 목록의 목적은 법적 준수 감사를 수행하는 것이 아니라 기술적 편집 가능성과 렌더링 안정성을 확인하는 것입니다. 기본 글꼴 목록은 full=True에서 반환된 튜플 길이와 다릅니다. 읽을 때 처음 6개 항목을 가져와야 하며 extract_font에서 반환된 글꼴 바이트가 비어 있는지 확인해야 합니다. Base14 글꼴 참조는 글꼴이 프로그램에 포함되어 있음을 의미하지 않으며 하위 집합 글꼴이 항상 오류로 처리되어서는 안 됩니다.
한 문장 결론
먼저 글꼴 목록을 작성한 다음 번역 경로를 결정하세요. 텍스트를 추출하기 전에 글꼴을 전체적으로 변경하지 마십시오.
| 당신의 상황 | 권장 사례 | 이유 |
|---|---|---|
| 글꼴 프로그램이 비어 있습니다. | 기록은 Embedder로 추출되지 않으며 페이지 상황을 확인합니다. | Base14 참조가 포함된 글꼴과 같지 않습니다. |
| 하위 집합 글꼴을 만나보세요 | 글꼴 정체성 유지 | 하위 집합 글꼴은 손상과 동일하지 않습니다. |
| 글꼴 목록이 비어 있습니다. | 페이지 내용 확인 | 페이지는 이미지이거나 기타 그려진 경로일 수 있습니다. |
| 실제 파일을 처리해야 함 | 둔감한 샘플을 먼저 확인하십시오. | 샘플 코드는 모든 실제 파일에 대한 효과를 나타내지 않습니다. |
글꼴을 전역적으로 직접 교체할 수 없는 이유는 무엇입니까?
글꼴을 직접 바꾸면 몇 가지 일반적인 문제가 발생합니다.
- 원문의 수학 기호는 사각형으로 표시됩니다.
- 테이블의 숫자 동일 너비 정렬이 유효하지 않습니다.
- 제한된 글꼴이 포함되어 있어 일부 리더에서는 번역이 열리지 않습니다.
따라서 텍스트 추출이나 조판 재구성을 시작하기 전에 문서의 글꼴 목록을 작성하십시오. `get_page_fonts()`는 PyMuPDF에서 제공하는 기본 프로브로, 각 페이지에서 실제로 참조하는 글꼴 리소스, 완전히 포함되었는지 여부, 인코딩 유형을 알려줄 수 있습니다. 이 정보는 향후 OCR, 직접 교체 또는 수동 재배열을 사용해야 하는지 여부를 결정합니다.
글꼴 정보 읽기의 핵심 포인트
- 기본 글꼴 목록은 처음 6개 항목으로 읽혀지는
full=True에서 반환된 튜플과 길이가 다릅니다. - 글꼴 프로그램이 비어 있으면 내장된 글꼴 바이트가 추출되지 않음을 의미합니다.
- 하위 글꼴은 글꼴 식별자만 유지하면 되며, 직접적으로 오류로 판단하지는 않습니다.
합성 테스트: 메모리 구성 및 어설션 검증
예제가 독립적으로 실행될 수 있도록 완전히 독립적인 테스트 사례를 구축했습니다. 외부 파일에 의존하는 대신 스크립트는 PyMuPDF를 사용하여 메모리에 표준 글꼴이 포함된 PDF를 만든 다음 즉시 글꼴 목록을 작성합니다. 이는 재현성을 보장할 뿐만 아니라 저작권 및 개인 정보 보호 위험도 방지합니다.
import pymupdf
with pymupdf.open() as doc:
page = doc.new_page()
page.insert_text((72, 72), "Font sample", fontname="helv")
fonts = doc.get_page_fonts(0, full=True)
assert fonts
report = []
for item in fonts:
xref, ext, kind, basefont, name, encoding = item[:6]
extracted_name, extracted_ext, extracted_type, data = doc.extract_font(xref)
report.append({"name": basefont, "font_program_present": bool(data),
"xref": xref, "encoding": encoding})
assert report[0]["name"] == "Helvetica"
assert report[0]["font_program_present"] is False
assert report[0]["xref"] > 0
이 테스트에는 명확한 경계가 있습니다. 외부 글꼴 파일을 가져오지 않으면 "손상된" 또는 "포함되지 않은" 합성 글꼴 개체를 메모리에 생성할 수 없습니다. 따라서 이 테스트에서는 일반 내장 글꼴의 구문 분석 정확도를 확인하고 함수의 유효하지 않은 페이지 번호에 대한 방어 처리라는 두 가지에 중점을 둡니다. 예외 분기는 개별적으로 테스트해야 합니다. 데모 코드는 격리된 환경에서 실행되지만, 이것이 모든 실제 파일이나 제품 성능을 보장하지는 않습니다.
허용 기준 및 직접 검토 경계
코드의 "안전" 또는 "경고" 출력은 기술적 신호일 뿐이며 번역 가능성과 직접적으로 동일시될 수 없습니다. 스크립트는 포함 상태를 정확하게 보고할 수 있지만 글꼴에 대상 언어의 해당 문자 모양이 있는지 여부를 알 수 없으며 라이센스가 포함 수정을 허용하는지 여부를 평가할 수도 없습니다. 이러한 결정은 프로젝트 맥락 내에서 사람들이 내려야 합니다.
특정 예외 처리 결정
| 관찰하다 | 무엇을 해야할지 | 추론해서는 안 된다 |
|---|---|---|
| 글꼴 프로그램이 비어 있습니다. | 삽입할 레코드를 가져오지 못했습니다. | Base14 인용은 포함과 동일하지 않습니다. |
| 하위 집합 글꼴 | 글꼴 정체성 유지 | 피해에 대한 직접적인 판단은 없음 |
| 목록이 비어 있습니다. | 페이지 내용 확인 | 이미지 또는 기타 그려진 경로일 수 있습니다. |
중요한 서류를 처리하기 전, 원본을 보관하시고 위의 허용범위 및 허용사항에 따라 검토하시기 바랍니다.
🎯 어떤 방법이 당신에게 적합합니까?
번역할 PDF를 방금 받은 경우
어떤 경로를 선택할지 결정하기 전에 먼저 글꼴 목록을 확인하세요. 서두르지 말고 글꼴을 교체하세요.
감지 결과 글꼴 프로그램이 비어 있는 것으로 나타나는 경우
이를 문서화하고 페이지 내용을 확인하세요. 삽입이 완료된 것처럼 처리하지 마세요.
문서에 하위 글꼴이 있는 경우
폰트 로고를 그대로 두고 오류로 직접 판단하기보다는 정상적인 상황으로 처리해 주세요.
실제 파일로 검증이 필요한 경우
업로드 권한이 있는 둔감 샘플을 사용하고 이 문서의 체크리스트를 사용하여 결과를 다시 확인하세요.
❓ 자주 묻는 질문(FAQ)
1. Base14 글꼴 참조는 글꼴이 포함되었음을 의미합니까?
아니요. Base14 글꼴 참조는 글꼴 프로그램이 포함되었음을 의미하지 않습니다. extract_font에서 반환된 글꼴 바이트가 비어 있는지 확인해야 합니다.
2. 서브셋 폰트에 문제가 있는 걸까요?
불확실한. 하위 글꼴을 모두 오류로 판단해서는 안 됩니다. 폰트 로고만 보관하시고 훼손됐다고 직접 판단하지 마세요.
3. 글꼴 목록이 비어 있으면 페이지에 문제가 있다는 뜻인가요?
불확실한. 목록이 비어 있으면 먼저 페이지 내용을 확인해야 합니다. 페이지는 이미지이거나 다른 그리기 경로일 수 있습니다.
4. 스크립트의 "안전한" 결과를 번역 결정에 직접 사용할 수 있습니까?
할 수 없습니다. 코드 출력은 단지 기술적인 신호일 뿐이며 대상 언어 문자를 사용할 수 있는지 또는 라이센스가 포함 수정을 허용하는지 여부를 알 수 없습니다.
📝 요약
글꼴 인벤토리는 PDF 번역 전 기본 단계입니다. 문서의 편집 가능성과 렌더링 안정성을 판단하는 데 도움이 됩니다. 파일을 받은 후 먼저 글꼴을 확인한 후 경로를 선택하세요. 번역 후에도 제목, 텍스트, 범례 간의 일치 여부를 확인해야 합니다.


