API를 통해 구매 및 판매 주문서에서 품목, 총액, 고객 정보 추출하는 방법
요약
구매 주문서(PO)와 판매 주문서(SO) 같은 비즈니스 문서를 처리할 때, 기존의 파싱 도구는 레이아웃 변화에 취약하여 유지보수 비용이 높습니다. PDF4me의 AI 주문 파서는 캡처 영역이나 정규식 없이도 PO와 SO 모두 동일한 스키마로 데이터를 추출하는 통합적인 방식을 제시합니다.
핵심 포인트
- PO/SO를 하나의 파서가 처리해야 효율적입니다.
- 기존 방식은 레이아웃 변화에 취약하여 유지보수가 어렵습니다.
- PDF4me AI는 캡처 영역과 정규식 없이도 일관된 스키마를 제공합니다.
모든 조달(procurement), 이행(fulfillment) 또는 ERP 관련 팀은 결국 똑같은 임시방편 도구를 만들게 됩니다. 즉, 구매 주문서(PO) PDF 파일을 열고, 품목을 찾고, 총액을 찾고, 이를 실제 비즈니스를 운영하는 시스템 기록(system of record)과 일치시키는 무언가입니다. 그러다가 새로운 공급업체가 다른 레이아웃의 PO를 보내면 정규 표현식(regex)이 깨지고, 결국 누군가가 애초에 소유하고 싶지 않았던 파서(parser)를 수정하느라 오후 시간을 보냅니다.
구매 주문서와 판매 주문서는 동일한 거래의 양면입니다 (한쪽은 발행하고, 다른 쪽은 이행합니다). 하지만 대부분의 파싱 도구가 읽기 전에 레이아웃을 설명하도록 요구하기 때문에, 두 방향 각각에서 문서 처리 문제로 취급됩니다. 이것이 고칠 가치가 있는 부분이며, OCR 자체가 아닙니다.
하나의 파서가 두 문서를 모두 다뤄야 하는 이유
구매 주문서와 판매 주문서는 거의 동일한 정보를 담고 있습니다: 주문 번호, 날짜, 수신자, 주문 품목, 수량, 가격 및 총액입니다. 차이점은 누가 이 거래의 어느 쪽에서 작성했는지에 불과합니다. 구매자의 조달 시스템이 PO를 생성하고; 판매자의 주문 입력 시스템이 SO를 생성합니다. 다운스트림으로, 조정(reconciliation) 또는 이행 시스템은 보통 둘 다 읽어야 합니다. 왜냐하면 한 회사의 나가는 PO가 종종 다른 회사의 들어오는 SO가 같은 워크플로우에 속하기 때문입니다.
이러한 공유된 형태 덕분에 스키마 기반 파서(schema-driven parser)는 템플릿 매칭(template matching)으로는 할 수 없는 방식으로 작동합니다. 캡처 영역 도구(capture-area tool)는 픽셀 좌표에 고정되기 때문에, 로고를 왼쪽으로 6mm 이동하는 공급업체도 템플릿을 망가뜨립니다. 정규 표현식 기반 도구는 텍스트 패턴에 고정되기 때문에,
PDF4me의 AI 주문 파서가 캡처 영역과 정규식을 완전히 건너뛰는 방식: PDF나 이미지를 전송하면 고정된 JSON 형태를 반환하며, PDF4me 자체 Make.com 통합 문서에 따르면 이 형태는 원본 문서가 구매 주문서(purchase order)이든 판매 주문서(sales order)이든 동일합니다("템플릿 설정 없이 작동", "두 문서 유형 모두 동일한 스키마를 반환").
문서화된 출력 필드는 다음과 같습니다:
orderNumber(string): 주문 번호 또는 참조 번호. 문서가 사용하는 형식에 관계없이 사용 가능함 (PO-2024-001,SO-78423등).orderDate(string): ISO 8601 형식(YYYY-MM-DD)으로 정규화된 날짜.customerName(string): 문서에 기재된 고객 또는 공급업체 이름.lineItems(array): 각 행은description,quantity,unitPrice,total을 포함함.subTotal(number): 세금, 배송비, 할인을 제외한 금액.total(number): 모든 청구액이 포함된 최종 금액.currency(string): ISO 4217 코드 (USD,EUR,INR, ...).shippingAddress(string): 배송 또는 전달 주소.jobId(string): 감사/지원용으로 PDF4me 자체의 작업 ID.success(boolean) /message(string): 완료 상태.
실제 응답 예시:
{
"success": true,
"jobId": "a1b2c3d4-e5f6-4789-9abc-def012345678",
...
이것만으로도 사람이 먼저 PDF를 열어보지 않고도 ERP 라인을 채우거나, 조정 임계값 검사(reconciliation threshold check)를 실행하거나, 또는 이행 워크플로우(fulfillment workflow)를 트리거할 수 있습니다.
솔직히 말씀드릴 만한 문서화의 공백: docs.pdf4me.com에서 이 특정 작업에 대한 REST 전용 워크스루가 게시되어 있지 않습니다 (확인된 404 오류이며, 추측이 아닙니다). 또한 공식 GitHub의 pdf4me-api-samples 리포지토리에도 이 클러스터에 있는 다른 여러 AI 파서들과 달리 Order Parser 폴더가 없습니다. 현재 Make.com만이 이 작업에 대한 전용적이고 필드별로 작성된 가이드를 제공하는 플랫폼입니다. 만약 원시 REST API를 통해 이를 호출한다면, 위의 스키마(Make의 문서를 기반으로 검증됨)가 반환될 것으로 예상할 수 있지만, 엄격한 유효성 검사기(validator)를 구축하기 전에 반드시 자체 문서로 테스트해 보십시오.
두 번째 공백은 누락된 페이지라기보다는 불일치입니다: PDF4me의 Power Automate 커넥터( Microsoft의 공식 커넥터 참조에 AI - Order Parser / 작업 ID ProcessOrderAi로 나열됨)는 명목상 동일한 작업을 수행하지만, invoiceToName/deliverToName 쌍, products 배열, 그리고 일반적인 목적의 스키마라기보다는 특정 고객의 템플릿에서 남겨진 것처럼 보이는 몇몇 필드를 중심으로 상당히 다른 출력 형태를 문서화하고 있습니다. 이는 다른 모델 버전이거나, Microsoft 측의 오래된 페이지일 수도 있고, 커넥터별 응답 래퍼(response wrapper)일 수도 있으며, 외부에서는 어느 것인지 알 방법이 없습니다. Power Automate를 기반으로 구축하는 경우, 흐름(Flow)을 연결하기 전에 해당 작업에 대해 라이브 테스트 주문을 실행하여 실제로 반환되는 필드 이름을 확인해야 합니다.
이 기능이 노코드 또는 커스텀 스택에서 어떻게 활용될 수 있는가
- Make: AI-Process Order 모듈에 대한 전용 서면 워크스루가 포함된 유일한 플랫폼입니다. 위 필드 테이블을 매핑하고, Order Name과 문서 바이너리를 실행하며, 라인 항목당 하나의 ERP 행이 필요한 경우
lineItems에 대해 Iterator를 실행하면 됩니다. - Power Automate: Microsoft 자체 커넥터 목록에 따라 Power Automate, Power Apps, Copilot Studio (Premium) 전반에서 기본 커넥터 액션(
ProcessOrderAi)과 동일한 기능을 사용할 수 있습니다. 연결당 60초에 100회 호출 제한이 적용됩니다. 위에서 언급된 불일치 사항에 따라 라이브 출력 필드를 직접 확인하십시오. - REST API: PDF4me의 광범위한 AI 파서 제품군은 노코드 플로우 대신 자체 백엔드를 구축하는 팀을 위해 직접 접근할 수 있으며, 이는 PDF4me의 다른 엔드포인트와 동일한 API 키 및 연결 패턴을 따릅니다.
- 고정된 스키마로 충분하지 않을 때: 표준 파서가 이름을 지정하지 않은 필드(사용자 정의 SKU 형식, 프로젝트 코드, 구매자별 승인 필드)를 포함하는 주문의 경우, PDF4me의 Universal Document Parser가 더 적합합니다. 이 파서는 추출할 정확한 필드를 지정할 수 있게 해주며, 또는 PDF4me 대시보드에서 재사용 가능한 추출 프로필을 정의할 수 있는 Document Parser / custom analyzer 경로를 사용할 수도 있습니다. 추가 필드를 주문 파서의 출력에 붙이기 위해 후처리 스크립트를 작성하기 전에 이 둘 중 하나를 사용하십시오.
실제로 해결하는 사용 사례
한 소규모 유통업체를 상상해 보세요. 이 업체는 40개의 다른 소매점 계정으로부터 구매 주문서(PO)를 PDF 형식의 이메일로 받습니다. 각 소매점은 자신이 사용하는 임의의 주문 입력 시스템을 사용하고 있습니다. 유통업체 측 누구도 40개의 템플릿을 만들고 싶어 하지 않습니다. 들어오는 모든 PO를 Order Parser를 통해 처리하면, 발신처에 관계없이 모두 동일한 orderNumber / lineItems / total 형태로 표준화됩니다. 하류(downstream)의 매칭 로직(이 품목이 재고에 존재하는지, 총액이 일치하는지, 사람이 검토해야 하는지 등)은 소매점별로 한 번씩 작성할 필요 없이, 단 하나의 스키마를 기반으로 한 번만 작성하면 됩니다.
동일한 로직은 판매자가 자신의 출하 주문 확인서(sales order confirmations)를 구매자의 조달 시스템이 실제로 받은 내용과 대조하는 역방향에서도 작동합니다. 이것이 바로 두 문서 유형 모두에 걸쳐 하나의 공유 스키마가 들리는 것보다 더 가치가 있는 이유입니다.
해결하지 못하는 부분
이 파서는 문서를 읽을 뿐, 비즈니스 로직을 검증하지는 않습니다. 나열된 lineItems를 고려했을 때 total이 실제로 정확한지 알려주지는 않을 것입니다(이는 여전히 작성해야 하는 조정(reconciliation) 확인입니다). 또한 원본 문서 자체가 품목을 전혀 명시하지 않았다면, 누락된 품목을 잡아내지도 못합니다. 추출 결과를 자체 검증 단계의 신뢰할 수 있는 입력으로 취급해야 하며, 그 대체재로 간주해서는 안 됩니다.
웹사이트: pdf4me.com
문서화: docs.pdf4me.com
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기