pd3f-core
실험적이므로 주의해서 사용하세요.
pd3f-core
언어 모델을 사용하여 PDF 에서 원본 연속 텍스트를 재구성하는 Python 패키지입니다. pd3f-core
PDF가 텍스트 기반이거나 이미 OCRd라고 가정합니다. pd3f-core
전체 Docker 기반 텍스트 추출 파이프라인(OCR 포함)인 pd3f의 핵심입니다.
pd3f-core
먼저 Parsr을 사용하여 PDF를 줄과 단락으로 묶습니다. 그런 다음 Python 패키지 dehyphen을 사용하여 가장 가능성 있는 방식으로 단락을 재구성합니다. Flair의 문자 기반 언어 모델을 사용하여 Perplexity를 계산하여 확률을 도출합니다. 불필요한 하이픈은 제거되고, 둘러싸는 단어에 따라 공백이나 새 줄이 유지되거나 삭제됩니다.
주로 독일어용으로 개발되었지만 다른 언어에서도 작동합니다. 이 프로젝트는 아직 초기 단계에 있습니다. 거친 가장자리와 빠른 변화를 예상하십시오.
pd3f-core의 API 문서: https://pd3f.github.io/pd3f-core/index.html
pd3f 문서(): https://pd3f.com/docs/
하이픈('-')을 제거하여 두 줄을 연결할 수 있는지 확인하세요.
줄을 연결할 때 간단한 공백(' ')을 추가할지 아니면 새 줄('n')을 추가할지 결정하세요.
페이지의 마지막 문단과 다음 페이지의 첫 문단이 결합 가능한지 확인하세요.
단락을 연결하고 페이지 나누기를 되돌리려면 각주를 감지하여 미주로 변환하세요. 지금은 각주가 파일 끝으로 이동됩니다.
머리글이나 바닥글이 모든 페이지에서 동일한 경우 한 번만 표시합니다. 머리글은 문서의 시작 부분으로, 바닥글은 끝으로 가져옵니다. 바닥글의 유사성을 기반으로 한 일부 휴리스틱이 사용됩니다. (텍스트의 Jaccard 거리 및 겹치는 모양 비교)
pip install pd3f
또는
poetry add pd3f
로컬 Parsr 인스턴스를 시작합니다.
docker-compose up
(원격 Parsr 인스턴스(스크립트)를 터널링하거나 원격 주소를 선택할 수도 있습니다.)
from pd3f import extract
text , tables = extract ( file_path , tables = False , experimental = False , force_gpu = False , lang = "multi" , fast = False , parsr_location = "localhost:3001" )
문서의 매개변수에 대한 설명: https://pd3f.github.io/pd3f-core/export.html#pd3f.export.extract
CUDA를 사용하면 Flair를 통한 평가 속도가 빨라집니다. 하지만 (비싼) GPU가 필요합니다. CUDA를 사용하여 GPU를 설정해야 합니다. Ubuntu 18.04에 대한 가이드는 다음과 같습니다.
conda install pytorch torchvision cudatoolkit=10.2 -c pytorch
(예)pd3f-core
설치: poetry add pd3f
Poetry는 Conda 가상 환경 내에서 실행되므로 새로운 가상 환경을 생성하지 않는다는 것을 인식합니다. CUDA 설정이 어려우므로 가장 쉬운 방법(conda 사용)으로 설치하세요.
pd3f-core
의 핵심은 Parsr의 JSON 출력입니다. 특정 항목이 선택된 방법과 이유에 대한 일부 의견. 다양한 모듈에 대한 Parsr의 문서
Parsr에는 단락을 특정 유형으로 분류하는 여러 모듈이 있습니다. 목록 감지와 제목 감지 기능을 제공합니다. 내 경험상 둘 다 정확도가 너무 낮아서 지금은 사용하지 않습니다. 이는 또한 추출된(출력) 모든 텍스트가 단순함(제목 없음, 다른 서식 등)을 의미합니다.
어떤 단락이 다른 단락 뒤에 있는지 이해해야 할 수 있으므로 그리기 + 이미지 감지를 활성화합니다. 이는 단락 결합 여부를 결정할 때 도움이 될 수 있습니다. 하지만 fast
설정을 활성화하면 삭제됩니다.
JSON 출력에는 pageNumber
필드가 있습니다. 이는 페이지 감지 모듈에서 비롯됩니다. 따라서 pageNumber
각 페이지의 머리글/바닥글에서 파생됩니다. 따라서 페이지 배열의 인덱스와 다를 수 있습니다. JSON 출력의 pageNumber
를 릴레이하지 마세요.
words-to-line-new
이와 같이 사용되었습니다. 오류는 없지만 다르게 사용하면 정확도가 떨어집니다.
" words-to-line-new " ,
[
" reading-order-detection " ,
결과가 OCRmyPDF보다 나쁘기 때문에 Parsr로 OCR을 수행하지 마십시오(후자는 이미지 전처리를 사용하기 때문입니다).
시를 설치하고 사용하세요.
Affero 일반 공중 라이선스 3.0