Enterprise 에디션
인텔리전스
한눈에 보기
섹션 제목: “한눈에 보기”NextPDF Enterprise Intelligence는 원시 키-값 및 표 데이터를 타입이 지정되고 선택적으로 스키마로 검증된 구조로 변환하며, 스캔된 페이지에 OCR 백엔드를 구동하여 검색 가능한 PDF 생성을 오케스트레이션합니다. 자신이 생성하는 구조를 설명할 뿐, OCR 정확도나 추출 재현율을 단언하지 않습니다.
가용성 및 라이선스
섹션 제목: “가용성 및 라이선스”이 기능은 NextPDF Enterprise(nextpdf/enterprise)에 포함되며 Enterprise 등급 라이선스 봉투로 활성화됩니다. 해당 권한이 없는 배포 환경은 이 기능의 클래스들을 로드하지 않습니다. 활성 Enterprise 권한이 없는 배포 환경은 이 클래스들을 로드하지 않습니다. 에디션 비교 및 라이선스 받기.
composer require nextpdf/enterprise:^3개념 개요
섹션 제목: “개념 개요”구조화된 추출기는 원시 키-값 쌍을 받아서 — 상류에서 액셀러레이터나 휴리스틱 파서가 생성한 것 — 타입이 지정된 쌍 객체를 내보냅니다. 스키마가 제공되면 키가 스키마 필드와 일치하는 쌍만 유지하고, 어떤 필수 필드가 누락되었는지 보고합니다. 명시적 신뢰도가 없는 쌍에는 고정된 기본값이 부여됩니다. 이는 이미 추출된 데이터에 대한 타이핑 및 검증 단계입니다. 그 자체가 추출 또는 인식 엔진은 아니며, 계산된 정밀도를 할당하지 않습니다.
표 추출기는 원시 행 그리드를 받아서, 정규화된 페이지 영역을 세분하여 도출한, 셀별 객체와 합성된 균일한 경계 상자를 갖춘 구조화된 표 결과를 만듭니다. 짧은 행은 모든 행이 가장 넓은 열 수를 갖도록 패딩됩니다. 행이나 열이 없는 표는 건너뜁니다. 경계 상자는 측정된 레이아웃이 아니라 균일한 그리드 합성입니다.
검색 가능 오버레이 오케스트레이터는 스캔되거나 혼합된 PDF를 받아, 사용 가능한 텍스트 레이어가 없는 페이지를 감지하고, 구성된 OCR 백엔드를 구동하여, 페이지별 단어 수와 평균 신뢰도를 설명하는 결과를 생성합니다. 비가시 텍스트가 검색 가능한 스캔 페이지의 메커니즘입니다. 텍스트 표시 연산자는 텍스트 렌더링 모드가 텍스트를 채우지도 윤곽선 처리하지도 않도록 설정된 상태에서 글리프를 배치할 수 있으며 — ISO 32000-2:2020 §9.3.3 — 텍스트 표시 연산자는 콘텐츠 스트림에 글리프를 배치합니다 — ISO 32000-2:2020 §9.4. 원본이 태그된 경우, 논리적 구조 계층은 콘텐츠를 읽기 순서에 매핑하고 — ISO 32000-2:2020 §14.7 — 태그된 구조는 콘텐츠 재사용을 지원하며 — ISO 32000-2:2020 §14.8 — 표 구조 요소는 행과 셀을 설명합니다 — ISO 32000-2:2020 §14.8.
실제 래스터화와 비가시 텍스트 주입은 별도의 사이드카 프로세스가 수행합니다. PHP 표면은 워크플로를 오케스트레이션하고 결과 메타데이터를 생성합니다. 오버레이 실행의 출력은 파생 문서입니다. 기존 서명은 모두 무효화되며 적합성 상태는 재검증이 필요합니다. 신뢰도 값은 패스스루이거나 고정된 기본값이며, 보장된 정확도 수치가 아닙니다.
이렇게 작동하는 이유
섹션 제목: “이렇게 작동하는 이유”이 표면은 구조화와 인식 사이에 명확한 선을 긋습니다. 타이핑과 스키마 검증은 결정적이고 저렴하므로 인프로세스로 실행됩니다. 인식 — 래스터화와 비가시 텍스트 주입 — 은 무겁고 백엔드에 특화되어 있으며 PHP 신뢰 경계 밖에 두는 것이 가장 좋으므로, 주입된 OCR 백엔드와 별도의 사이드카에 위임됩니다. 그 분리 덕분에 배포 환경은 호출 코드를 변경하지 않고도 문서 이미지와 인식된 텍스트가 어디에서 계산되고 저장되는지를 선택할 수 있습니다. 또한 이 모듈은 정밀도 수치를 지어내기를 거부합니다. 라벨이 없는 쌍에는 고정된 기본값이 부여되고, 보고되는 신뢰도는 계산되는 것이 아니라 그대로 전달됩니다. 호출자에게는 조작된 정확도 수치가 절대 건네지지 않습니다.
설계 배경: 추측을 거부하는 API.
API 표면
섹션 제목: “API 표면”| Type | Kind | Role | Stability | Since |
|---|---|---|---|---|
StructuredExtractor | class | 원시 키-값 쌍에 타입을 지정함; 스키마 필터 및 필수 필드 검사 | stable | 2.2.0 |
ExtractionSchema / SchemaField | classes | 필드 정의 및 필수 필드 집합 | stable | 2.2.0 |
KeyValuePair | class | 신뢰도를 갖는 타입 지정된 키-값 쌍 하나 | stable | 2.2.0 |
TableExtractor | class | 원시 행 그리드로부터 구조화된 표를 생성함 | stable | 2.2.0 |
TableResult / TableCell | classes | 셀별 텍스트, 신뢰도, 경계 상자를 갖춘 표 형태 | stable | 2.2.0 |
SearchableOverlay | class | OCR 기반 검색 가능 PDF 생성을 오케스트레이션함 | stable | 2.2.0 |
OverlayConfig / OverlayQuality | classes | 언어 힌트, DPI, 품질 프리셋, 네이티브 페이지 건너뛰기 | stable | 2.2.0 |
SearchableOverlayResult / PageOverlayInfo | classes | 페이지별 단어 수 및 평균 신뢰도 | stable | 2.2.0 |
ExtractionConfig / ExtractionStrategy | classes | 휴리스틱 대 OCR 보조 전략 및 OCR 힌트 | stable | 2.2.0 |
OCR 백엔드는 주입된 계약입니다. 오케스트레이터는 OCR 모델을 내장하지 않습니다. 배포 환경이 백엔드를 제공하며, OCR이 어디에서 계산되는지에 대한 책임을 집니다.
코드 샘플 — 빠른 시작
섹션 제목: “코드 샘플 — 빠른 시작”<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Enterprise\Intelligence\StructuredExtractor;use NextPDF\Enterprise\Intelligence\ExtractionSchema;
/** * Type raw pairs against a schema and list any missing required fields. * * @param list<array{key: string, value: string, confidence?: float}> $rawPairs Upstream key-value data. * * @return list<string> Missing required field names (empty when compliant). */function validate(array $rawPairs, ExtractionSchema $schema): array{ $extractor = new StructuredExtractor(); $pairs = $extractor->extract($rawPairs, $schema);
return $extractor->validateSchema($schema, $pairs);}추출기는 상류 단계가 이미 생성한 데이터에 타입을 지정하고 필터링합니다. 자체적으로는 어떤 인식도 수행하지 않습니다.
코드 샘플 — 프로덕션
섹션 제목: “코드 샘플 — 프로덕션”<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Enterprise\Accelerator\OcrStrategyInterface;use NextPDF\Enterprise\Intelligence\OverlayConfig;use NextPDF\Enterprise\Intelligence\SearchableOverlay;use Psr\Log\LoggerInterface;
final readonly class OverlayJob{ public function __construct( private OcrStrategyInterface $ocr, private LoggerInterface $logger, ) {}
/** * Generate a searchable PDF from a scanned input. * * @param string $pdfData Scanned or mixed PDF bytes. * * @return string The derived searchable PDF bytes. */ public function run(string $pdfData): string { try { $result = (new SearchableOverlay($this->ocr)) ->generate($pdfData, new OverlayConfig(language: 'eng'));
$this->logger->info('Overlay complete', [ 'pages' => $result->pageCount, 'words' => $result->wordCount, ]);
return $result->pdfData; } catch (\Throwable $e) { $this->logger->error('Overlay failed', ['error' => $e->getMessage()]);
throw $e; } }}로그는 페이지 수와 단어 수만 담습니다. 인식된 텍스트나 문서 바이트는 담지 않습니다. catch는 다시 던집니다. 실패를 삼키지 않습니다.
엣지 케이스 및 함정
섹션 제목: “엣지 케이스 및 함정”- 구조화된 추출기와 표 추출기는 이미 추출된 데이터를 소비합니다. PDF를 파싱하거나, 모델을 실행하거나, 정밀도를 측정하지 않습니다. 신뢰도는 패스스루이거나 고정된 기본값입니다.
- 합성된 표 경계 상자는 측정된 레이아웃이 아니라 균일한 그리드 세분입니다. 실제 기하 정보가 필요한 호출자는 이를 다른 곳에서 얻어야 합니다.
- 검색 가능 오버레이는 파생 문서입니다. 기존 디지털 서명은 모두 무효화되며, 적합성 상태는 오버레이 이후 재검증되어야 합니다.
- OCR 백엔드를 사용할 수 없는 경우, 해당 페이지는 전체 실행을 조용히 실패시키는 대신 단어 수에 0을 기여합니다. 페이지별 결과를 확인하십시오.
- 사용 가능한 네이티브 텍스트 레이어가 이미 있는 페이지는 기본적으로 건너뜁니다. 다시 OCR을 수행해야 한다면 구성에서 건너뛰기를 비활성화하십시오.
- OCR 정확도는 전적으로 제공된 백엔드, 입력 품질, 언어 힌트에 따라 달라집니다. NextPDF는 인식 정확도나 추출 재현율을 단언하지 않습니다.
구조화 및 표 추출은 입력 크기에 대해 선형입니다. 검색 가능 오버레이 비용은 OCR 백엔드와 구성된 DPI에서의 사이드카 래스터화가 좌우합니다. 오케스트레이션 오버헤드는 작습니다. 페이지 및 크기 입력은 한정되어 있으며 오버플로 시 실패-차단됩니다. 재현성 프로파일은 structural입니다. 즉, 고정된 입력에 대해 추출은 결정적이지만, 오버레이 출력은 OCR 백엔드에 따라 달라지며 백엔드나 버전 간에 변동될 수 있습니다.
보안 참고
섹션 제목: “보안 참고”추출기는 읽기 전용 구조화 단계입니다. 오버레이 표면은 파생 문서를 생성하고 입력 크기와 페이지 수를 한정하며, 오버플로 시 실패-차단됩니다. OCR 백엔드는 통합 지점이며 신뢰 경계의 일부가 아닙니다. 배포 환경이 이를 선택하고 운영합니다. 이 모듈에서는 어떤 암호화 작업도 발생하지 않으므로, FIPS 주장을 하지 않습니다.
데이터 레지던시 및 PII 완화
섹션 제목: “데이터 레지던시 및 PII 완화”구조화 및 표 추출은 호스트에서 인프로세스로 실행됩니다. 검색 가능 오버레이 오케스트레이션은 주입된 OCR 백엔드를 구동합니다. 그 백엔드가 어디에서 실행되는지 — 인프로세스, 로컬 사이드카, 또는 원격 서비스 — 그리고 따라서 문서 이미지와 인식된 텍스트가 어디에서 계산되고 저장되는지는 라이브러리 경계 밖의 배포 책임입니다. 입력에 개인 데이터가 포함되면 인식된 텍스트 레이어에도 포함됩니다. 파생 문서를 그에 맞게 취급하십시오.
안전한 텔레메트리 및 로그 스크러빙
섹션 제목: “안전한 텔레메트리 및 로그 스크러빙”라이브러리는 구조적 메시지를 갖는 타입 지정 예외를 발생시키며, 예외 텍스트에 문서 바이트나 인식된 텍스트를 넣지 않습니다. 이 표면 주변에서 로깅하는 배포 환경은 — 프로덕션 샘플에 표시된 것처럼 — 수치와 구성을 로깅해야 하며, 원시 PDF 페이로드나 인식된 텍스트를 로그나 APM 백엔드에 로깅해서는 안 됩니다.
FIPS 모드 동작
섹션 제목: “FIPS 모드 동작”이 모듈에서는 어떤 암호화 작업도 발생하지 않으므로, FIPS 모드 고유의 동작이 없습니다.
적합성
섹션 제목: “적합성”| Claim | Standard | Clause |
|---|---|---|
| 텍스트 렌더링 모드는 글리프가 채워지는지, 윤곽선 처리되는지, 둘 다 아닌지를 제어합니다(비가시 OCR 텍스트의 근거). | ISO 32000-2:2020 | §9.3.3 |
| 텍스트 표시 연산자는 콘텐츠 스트림에 글리프를 배치합니다. | ISO 32000-2:2020 | §9.4 |
| 논리적 구조 계층은 콘텐츠를 읽기 순서에 매핑합니다. | ISO 32000-2:2020 | §14.7 |
| 태그된 구조는 콘텐츠 재사용을 지원합니다. | ISO 32000-2:2020 | §14.8 |
| 표 구조 요소는 행과 셀을 설명합니다. | ISO 32000-2:2020 | §14.8 |
| 구조 트리는 콘텐츠를 읽기 순서에 매핑합니다. | ISO 32000-2:2020 | §14.7 |
모든 조항은 의역되었습니다. NextPDF는 규범 텍스트를 재현하지 않습니다. 권위 있는 표현은 발행된 표준을 참조하십시오. NextPDF는 OCR 정확도나 추출 재현율 주장을 하지 않습니다. 이 페이지는 품질 보증이 아니라 생성된 구조와 오케스트레이션 경계를 명시합니다.
동작 계약
섹션 제목: “동작 계약”- 구조화된 추출기와 표 추출기는 이미 추출된 데이터를 소비합니다. PDF를 파싱하거나, 모델을 실행하거나, 정밀도를 측정하지 않습니다. 신뢰도는 패스스루이거나 고정된 기본값입니다.
- 스키마 필터는 키가 스키마 필드와 일치하는 쌍만 유지하고 누락된 필수 필드를 보고합니다. 합성된 표 경계 상자는 측정된 레이아웃이 아니라 균일한 그리드 세분입니다.
- 검색 가능 오버레이는 파생 문서입니다. 기존 디지털 서명은 모두 무효화되며 적합성 상태는 재검증되어야 합니다.
- OCR 백엔드를 사용할 수 없는 경우, 영향을 받는 페이지는 전체 실행을 조용히 실패시키는 대신 단어 수에 0을 기여합니다. 사용 가능한 네이티브 텍스트 레이어가 있는 페이지는 기본적으로 건너뜁니다.
- 페이지 및 크기 입력은 한정되어 있으며 오버플로 시 실패-차단됩니다. 고정된 입력에 대해 추출은 결정적입니다. 오버레이 출력은 제공된 OCR 백엔드에 따라 달라집니다.
발행 경계
섹션 제목: “발행 경계”이 페이지는 외부에서 관찰 가능한 동작과 지원되는 공개 API 표면만 문서화합니다. 내부 네임스페이스 경로, 헬퍼 클래스, 메커니즘 표, 런북 파일명, 티켓 접두사는 범위 밖입니다.
Core 폴백
섹션 제목: “Core 폴백”NextPDF Core(Apache-2.0)에는 검색 가능 오버레이 오케스트레이션도, 스키마로 검증된 구조화 표면도 없습니다 — 전혀 없습니다. 이 기능에는 Core 등급 등가물이 없습니다. Core AST 모델은 추출이나 OCR 표면이 아니라 파싱된 문서의 기반입니다.
Pro 폴백
섹션 제목: “Pro 폴백”NextPDF Pro는 이미 파싱된 문서에 대한 구조적 AST 기반 추출을 제공합니다. 스키마로 검증된 키-값 구조화, 원시 그리드로부터의 표 재구성, OCR 기반 검색 가능 오버레이 오케스트레이션은 제공하지 않습니다. 이들은 nextpdf/enterprise 패키지에서만 제공됩니다.
Enterprise 경계 참고
섹션 제목: “Enterprise 경계 참고”구조화/표 추출기와 오버레이 오케스트레이터는 동작 수준에서 설명됩니다. 실제 래스터화와 비가시 텍스트 주입은 별도의 사이드카 프로세스에서 실행됩니다. 사이드카 내부, OCR 모델, 그리고 모든 내부 오케스트레이션 세부 사항은 공개 표면의 범위 밖입니다. OCR 백엔드는 배포 환경이 제공하는 주입된 계약입니다.
배포 경계
섹션 제목: “배포 경계”배포 환경이 OCR 백엔드를 제공하고 운영하며 OCR이 어디에서 계산되는지(인프로세스, 로컬 사이드카, 또는 원격 서비스)를 선택합니다 — 따라서 문서 이미지와 인식된 텍스트가 어디에서 계산되고 저장되는지도 선택합니다. NextPDF Enterprise는 워크플로를 오케스트레이션하고 결과 메타데이터를 생성합니다. OCR 모델을 내장하거나 인식 정확도 또는 추출 재현율을 보장하지 않습니다.
법률 준수 경계
섹션 제목: “법률 준수 경계”Intelligence 표면에는 수출 통제 제한이 적용되지 않습니다. 라이브러리는 OCR 정확도나 추출 재현율 보증, 그리고 규제 준수 상태를 단언하지 않습니다. 이 문서는 법률 의견이 아닙니다. 자체 준수 및 법률 자문에게 확인하십시오.
함께 보기
섹션 제목: “함께 보기”- Intelligence 레퍼런스 — 이 기능에 대한 심층 API 레퍼런스.
- Pro 추출 — 구조적 AST 기반 인용 블록.
- Privacy — 추출된 텍스트에 대한 PII 감지.
- NextPDF Enterprise — 전체 Enterprise 기능 표면.
- Core AST — 파싱된 문서 모델.
- Tagged PDF · OCR · Searchable PDF — 용어집 항목.