PDF에서 그림을 돌릴 때 문자를 잃어버릴 수 있는 가능성을 해결하는 방법

문제


Python의 PDF 이미지 변환은 일반적으로 pdf2image를 사용합니다.때때로 우리는 PDF를 돌려 놓은 그림이 모두 공백이거나 일부 글자가 부족하다는 것을 발견할 수 있다. 구체적인 표현은 글자가 있어야 할 구역이 공백이라는 것이다.
어떤 원인 때문에 나는 문제가 발생한 서류를 올릴 수 없지만, 대체로 이 상황이다.
주요 코드는 다음과 같습니다.

images = pdf2image.convert_from_path('/path/to/pdf', output_folder='images/', fmt='jpg')
실행할 때 코드에 이상이 없음을 발견할 수 있지만 결과가 틀렸습니다.

분석 및 해결


사실 pdf2image 베이스에서 기본적으로 사용하는 것은 pdftoppm로 그림을 돌리는 것입니다. 저희가 직접 사용해서 문제가 있는 PDF를 테스트하면 경고를 출력할 수 있습니다.
pdftoppm를 제외하고 pdf2image는 두 가지 상황에서 pdftocairo를 사용하여 그림을 돌립니다구체적으로 다음과 같습니다.
tif/tiff 형식으로 변환할 때
transparent=True(기본값: False)가 되고 png/tif/tiff 로 전환될 때

Missing language pack for 'Adobe-GB1' mapping
언어 가방이 빠진 게 분명해.
그리고 글자가 부족하면 자연스럽게 생각나는 것은 글씨체가 부족하다는 것이다. 즉, 시스템에 PDF의 글씨체가 없다는 것이다.
우리는 대응하는 글꼴을 찾아서 설치해야 한다.
일반적으로 Linux 시스템에서 해당하는 글꼴 파일을/usr/share/fonts/디렉터리에 직접 복사하면 됩니다. fc-list:lang=zh-cn을 사용하여 현재 시스템에 어떤 중국어 글꼴이 있는지 볼 수 있습니다.
중국어의 경우 Noto CJK 글꼴은 모든 글자를 덮어쓸 수 있으며, 이 글꼴을 다운로드하여 설치할 수 있으며, 일부 시스템은 자체적으로 가지고 있을 수 있습니다.
글씨체가 있으면 다시 시도해 볼 때 안 된다는 것을 발견할 수 있습니다. 왜냐하면 다른 것이 필요하기 때문입니다. 포플러 데이터입니다.
이 물건은 무엇에 쓰입니까?저자의 설명에 따르면:
This package consists of encoding files for use with poppler. The encoding files are optional and poppler will automatically read them if they are present. When installed, the encoding files enables poppler to correctly render CJK and Cyrrilic properly. While poppler is licensed under the GPL, these encoding files have different license, and thus distributed separately.
대체로 이 가방에는 포플러가 CJK 문자를 정확하게 렌더링할 수 있는 인코딩 파일이 있습니다.
우리는 apt를 통해 설치할 수 있다.

sudo apt install poppler-data
그리고 다시 시도하면 정상적인 그림으로 전환하는 데 성공할 수 있을 것이다.
요약하자면, 너는 두 가지 물건이 필요하다.
올바른 글꼴 파일
poppler-data
Reference
이상의 개인적인 경험으로 여러분께 참고가 되었으면 좋겠습니다. 또한 많은 응원 부탁드립니다.만약 잘못이 있거나 완전한 부분을 고려하지 않으신다면 아낌없이 가르침을 주시기 바랍니다.

좋은 웹페이지 즐겨찾기