Tabled는 테이블을 감지하고 추출하기 위한 작은 라이브러리입니다. surya를 사용하여 PDF의 모든 테이블을 찾고, 행/열을 식별하고, 셀 형식을 markdown, csv 또는 html로 지정합니다.
특성 | 인구 | 2016년에서 2060년으로 변경 | ||||||
---|---|---|---|---|---|---|---|---|
2016년 | 2020 | 2030년 | 2040년 | 2050년 | 2060 | 숫자 | 퍼센트 | |
총인구 | 323.1 | 332.6 | 355.1 | 373.5 | 388.9 | 404.5 | 81.4 | 25.2 |
18세 미만 | 73.6 | 74.0 | 75.7 | 77.1 | 78.2 | 80.1 | 6.5 | 8.8 |
18~44세 | 116.0 | 119.2 | 125.0 | 126.4 | 129.6 | 132.7 | 16.7 | 14.4 |
45~64세 | 84.3 | 83.4 | 81.3 | 89.1 | 95.4 | 97.0 | 12.7 | 15.1 |
65세 이상 | 49.2 | 56.1 | 73.1 | 80.8 | 85.7 | 94.7 | 45.4 | 92.3 |
85세 이상 | 6.4 | 6.7 | 9.1 | 14.4 | 18.6 | 19.0 | 12.6 | 198.1 |
100년 이상 | 0.1 | 0.1 | 0.1 | 0.2 | 0.4 | 0.6 | 0.5 | 618.3 |
Discord는 향후 개발에 대해 논의하는 곳입니다.
여기에는 테이블용 호스팅 API가 있습니다.
PDF, 이미지, 워드 문서, 파워포인트에서 작동합니다.
지연 시간 급증 없이 일관된 속도
높은 신뢰성과 가동 시간
나는 개발/교육 비용을 계속 조달하면서 가능한 한 광범위하게 접근할 수 있는 테이블을 원합니다. 연구 및 개인적인 사용은 언제나 괜찮지만, 상업적인 사용에는 몇 가지 제한이 있습니다.
모델의 가중치는 cc-by-nc-sa-4.0
라이선스가 부여되지만 최근 12개월 동안 총 수익이 미화 500만 달러 미만이고 평생 VC/엔젤 자금이 500만 달러 미만인 조직에 대해서는 이를 포기하겠습니다. 높은. 또한 Datalab API와 경쟁해서는 안 됩니다. GPL 라이선스 요구 사항(이중 라이선스)을 제거하거나 수익 한도를 초과하여 상업적으로 가중치를 사용하려는 경우 여기에서 옵션을 확인하세요.
Python 3.10+ 및 PyTorch가 필요합니다. Mac이나 GPU 시스템을 사용하지 않는 경우 먼저 토치의 CPU 버전을 설치해야 할 수도 있습니다. 자세한 내용은 여기를 참조하세요.
다음을 사용하여 설치:
pip 설치 tabled-pdf
설치 후:
tabled/settings.py
에서 설정을 검사합니다. 환경 변수를 사용하여 모든 설정을 재정의할 수 있습니다.
토치 장치는 자동으로 감지되지만 이를 무시할 수 있습니다. 예를 들어 TORCH_DEVICE=cuda
.
모델 가중치는 처음으로 테이블을 실행할 때 자동으로 다운로드됩니다.
테이블에 있는 DATA_PATH
DATA_PATH
이미지, PDF 또는 이미지/PDF 폴더일 수 있습니다.
--format
각 테이블의 출력 형식을 지정합니다( markdown
, html
또는 csv
).
--save_json
추가 행 및 열 정보를 json 파일에 저장합니다.
--save_debug_images
감지된 행과 열을 보여주는 이미지를 저장합니다.
--skip_detection
전달한 이미지가 모두 잘린 테이블이며 테이블 감지가 필요하지 않음을 의미합니다.
--detect_cell_boxes
기본적으로 tabled가 pdf에서 셀 정보를 가져오려고 시도합니다. 대신 감지 모델로 셀을 감지하려면 이를 지정하십시오(일반적으로 잘못된 텍스트가 포함된 PDF에만 필요함).
--save_images
감지된 행/열 및 셀의 이미지를 저장하도록 지정합니다.
스크립트를 실행한 후 출력 디렉터리에는 입력 파일 이름과 동일한 기본 이름을 가진 폴더가 포함됩니다. 해당 폴더 안에는 소스 문서의 각 테이블에 대한 마크다운 파일이 있습니다. 선택적으로 테이블 이미지도 있습니다.
출력 디렉터리의 루트에도 results.json
파일이 있습니다. 파일에는 확장자가 없는 입력 파일 이름이 키인 json 사전이 포함됩니다. 각 값은 문서의 테이블당 하나씩 사전 목록이 됩니다. 각 테이블 사전에는 다음이 포함됩니다.
cells
- 각 테이블 셀에 대해 감지된 텍스트 및 경계 상자입니다.
bbox
- 테이블 bbox 내 셀의 bbox
text
- 셀의 텍스트
row_ids
- 셀이 속한 행의 ID
col_ids
- 셀이 속한 열의 ID
order
- 할당된 행/열 셀 내에서 이 셀의 순서입니다. (행, 열, 순서로 정렬)
rows
- 감지된 행의 bbox
bbox
- (x1, x2, y1, y2) 형식의 행 bbox
row_id
- 행의 고유 ID
cols
- 감지된 열의 bbox
bbox
- (x1, x2, y1, y2) 형식의 열 bbox
col_id
- 열의 고유 ID
image_bbox
- (x1, y1, x2, y2) 형식의 이미지에 대한 bbox입니다. (x1, y1)은 왼쪽 상단 모서리이고 (x2, y2)는 오른쪽 하단 모서리입니다. 테이블 bbox는 이에 상대적입니다.
bbox
- 이미지 bbox 내 테이블의 경계 상자입니다.
pnum
- 문서 내의 페이지 번호
tnum
- 페이지의 테이블 인덱스
이미지나 PDF 파일을 대화형으로 표로 시험해 볼 수 있는 스트림라이트 앱을 포함시켰습니다. 다음을 사용하여 실행하세요.
pip 설치 스트림라이트 tabled_gui
tabled.extract에서 import extract_tablesfrom tabled.fileinput import load_pdfs_imagesfrom tabled.inference.models import load_Detection_models, load_recognition_modelsdet_models, rec_models = load_Detection_models(), load_recognition_models()images, highres_images, names, text_lines = load_pdfs_images(IN_PATH)page_results = extract_tables(이미지, highres_images, text_lines, det_models, rec_models)
평균 점수 | 테이블당 소요시간 | 총 테이블 |
---|---|---|
0.847 | 0.029 | 688 |
경험적으로 구문 분석하고 렌더링할 수 있는 단순한 레이아웃으로 제한되어 있거나 실수를 저지르는 LLM을 사용해야 하기 때문에 테이블에 대한 좋은 실측 데이터를 얻는 것은 어렵습니다. 저는 GPT-4 테이블 예측을 의사 실측 자료로 사용하기로 결정했습니다.
Tabled는 GPT-4와 비교할 때 .847
정렬 점수를 얻습니다. 이는 테이블 행/셀의 텍스트 간의 정렬을 나타냅니다. 일부 정렬 오류는 GPT-4 실수 또는 GPT-4가 테이블 경계로 간주한 작은 불일치로 인해 발생합니다. 일반적으로 추출 품질이 상당히 높습니다.
VRAM 사용량이 10GB이고 배치 크기가 64
인 A10G에서 실행하면 테이블당 테이블당 .029
초가 걸립니다.
다음을 사용하여 벤치마크를 실행합니다.
파이썬 벤치마크/benchmark.py out.json
벤치마킹 데이터 세트와 테이블 구문 분석에 대한 토론을 해주신 Peter Jansen에게 감사드립니다.
추론 코드 및 모델 호스팅을 위한 Huggingface
훈련/추론을 위한 PyTorch