스페인, 이탈리아, 독일의 모든 호텔은 객실에 누가 묵는지 기록해야 합니다. 세 나라는 서로 다른 항목을, 서로 다른 기한에, 서로 다른 경로로 요구하며, 기록 보관 기간도 다릅니다. 한 나라에 맞춰 만든 체크인 양식은 나머지 두 나라에서는 맞지 않습니다.

이 글은 각 나라의 1차 자료를 읽고 항목을 두 그룹으로 나눕니다. 숙박객의 여권이나 신분증에 인쇄된 항목과, 숙박객 본인만 알려 줄 수 있는 항목입니다. 아래의 모든 요건은 링크된 자료에서 인용했습니다. 자료를 전부 읽을 수 없었던 부분은 추측으로 채우지 않고 빠진 내용을 밝혀 두었습니다.

이 글은 사진에서 여권과 신분증을 읽고 MRZ 검증 숫자를 서버에서 다시 확인하는 여권·신분증 OCR API, doc.cheap의 블로그입니다. 아래 내용은 doc.cheap에 의존하지 않습니다.

스페인: Real Decreto 933/2021

스페인의 규정은 관보 BOE에 공포된 Real Decreto 933/2021에 있습니다. 통합본에는 "Última actualización, publicada el 27/10/2021"이라고 표시되어 있으며, 통보 의무는 "a partir del 2 de enero de 2023" 적용됩니다(Disposición final tercera).

이 칙령이 호텔에 요구하는 것:

요건 조문 내용 조항
서명자 숙박 등록부는 "deberán ser firmados por toda persona mayor de catorce años" Art. 4.2
정확성 시설은 데이터가 신분증과 일치하는지 책임지며, 신분증은 "que habrán de ser exhibidos o facilitados por los usuarios" Art. 4.3
기록 부속서 I과 II의 데이터를 담은 "registro informático" Art. 5.1
기한 데이터를 "de manera inmediata, y en todo caso en un plazo no superior a 24 horas" 전송하며, 예약 시점과 "Al inicio de los servicios contratados"부터 계산 Art. 6.3
경로 "por procedimientos telemáticos". 사업자가 아닌 호스트는 다른 수단도 가능 Art. 6.4
보관 "Los datos del registro informático deberán conservarse durante un plazo de tres años a contar desde la finalización del servicio o prestación contratada." Art. 5.3

숙박객 항목은 Anexo I의 A.3절 "Datos de los viajeros"입니다. 값의 출처별로 정리하면 다음과 같습니다.

Anexo I A.3 항목 체크인 시 출처
a) Nombre 서류
b) Primer apellido 서류
c) Segundo apellido 서류(소지자에게 두 번째 성이 있는 경우)
d) Sexo 서류
e) Número de documento de identidad 서류
f) Número de soporte del documento 서류(스페인 카드). 여권 MRZ 항목에는 없음
g) Tipo de documento (DNI, pasaporte, TIE) 서류
h) Nacionalidad 서류
i) Fecha de nacimiento 서류
j) Lugar de residencia habitual (Dirección completa, Localidad, País) 숙박객
k) Teléfono fijo, l) Teléfono móvil, m) Correo electrónico 숙박객
n) Número de viajeros 숙박객 또는 예약
o) Relación de parentesco entre los viajeros(미성년자가 있는 경우) 숙박객

A.4절 "Datos de la transacción"은 예약 쪽 정보를 더합니다. 계약 참조 번호, 날짜와 서명, 입실과 퇴실 일시, 숙소 주소, 객실 수와 인터넷 제공 여부, 그리고 결제 정보(유형, 결제 수단 식별 정보, 그 명의자, 카드 유효기간, 결제일)입니다. 이 중 어느 것도 여권에 없습니다. 예약 시스템과 결제 시스템에서 가져옵니다.

파서가 빠지기 쉬운 함정이 하나 있습니다. 여권에는 성 항목이 하나뿐입니다. 스페인 이름은 성이 두 개인 경우가 많고 칙령은 이를 따로 요구하므로, 양식은 분리 결과를 보여 주고 숙박객이 고칠 수 있게 해야 합니다.

독일: Bundesmeldegesetz §§ 29와 30

독일의 규정은 연방주민등록법, Bundesmeldegesetz(BMG)에 있습니다. § 29 BMG는 누가 등록해야 하는지 정합니다.

"Beherbergte ausländische Personen haben am Tag der Ankunft einen besonderen Meldeschein handschriftlich zu unterschreiben, der die in § 30 Absatz 2 aufgeführten Daten enthält." (§ 29(2))

즉 현행 조문에서 의무를 지는 것은 외국인 숙박객이며, 그 시점은 도착 당일입니다. 동반하는 외국인 배우자, 파트너, 미성년 자녀는 인원수만 기재하고, 10명이 넘는 단체 여행에서는 인솔자만 서명합니다. § 29(3)에 따라 외국인 숙박객은 "durch die Vorlage eines gültigen Identitätsdokumentes (anerkannter und gültiger Pass oder Passersatz)" 신원을 확인합니다.

등록표가 종이일 필요는 없습니다. § 29(5)에 따라 숙박객이 동의하면 데이터를 전자적으로 수집할 수 있으며, 숙박객은 도착 당일 세 가지 방법 중 하나로 확인합니다. 강력한 고객 인증을 거친 카드 결제, 신분증 또는 체류허가증의 전자 신분 확인 기능, 또는 그 카드의 전자 ID를 현장에서 읽는 방법입니다.

§ 30 BMG는 내용을 정합니다. 등록표에는 "ausschließlich folgende Daten", 즉 다음 데이터만 담깁니다.

§ 30(2) 항목 체크인 시 출처
1. Datum der Ankunft und der voraussichtlichen Abreise 숙박객 또는 예약
2. Familiennamen 서류
3. Vornamen 서류
4. Geburtsdatum 서류
5. Staatsangehörigkeiten 서류. 항목이 복수형이므로 다른 국적이 있는지 묻기
6. Anschrift 숙박객
7. Zahl der ausländischen Mitreisenden und ihre Staatsangehörigkeit 숙박객
8. Seriennummer des anerkannten und gültigen Passes oder Passersatzpapiers 서류

운영자는 또한 등록표를 신분증과 대조하고, 차이가 있거나 서류가 없거나 유효하지 않으면 이를 기록해야 합니다(§ 30(2)). 주는 관광세와 휴양세를 위한 항목을 추가할 수 있습니다(§ 30(3)).

보관 기간은 § 30(4)에 있습니다. 등록표는 "vom Tag der Abreise der beherbergten Person an ein Jahr" 보관하고, 그 뒤 "innerhalb von drei Monaten nach Ablauf der Aufbewahrungsfrist" 폐기합니다. 전자 데이터에도 같은 기간이 적용되며, 운영자는 요청이 있으면 기계 판독 가능한 형식으로 당국에 제출해야 합니다. 스페인, 이탈리아와 달리 BMG에는 정기적인 전송 기한이 없습니다. 등록표는 현장에 보관하고 요청이 있을 때 제시합니다. 전자적 처리는 Reg. (EU) 2016/679, 즉 GDPR의 제24조, 제25조, 제32조를 충족해야 합니다(§ 30(5)).

이탈리아: TULPS 제109조와 Alloggiati Web

이탈리아의 의무는 공공안전 통합법인 TULPS 제109조와, 2013년 1월 7일 및 2021년 9월 16일 장관령에서 나옵니다. Normattiva에 있는 조문의 공식 텍스트는 스크립트로 불러오기 때문에, 여기서의 인용은 데이터를 받는 국가경찰 포털 Alloggiati Web에서 가져왔습니다. 그 첫 페이지에는 이렇게 적혀 있습니다.

"I gestori di esercizi alberghieri e di tutte le altre strutture ricettive, ENTRO LE 24 ORE successive all'arrivo, devono comunicare alle questure territorialmente competenti, ESCLUSIVAMENTE per il tramite del Servizio Alloggiati, le generalità delle persone alloggiate. Se il soggiorno è inferiore alle 24 ore le generalità vanno inviate all'arrivo stesso."

요약하면, 도착 후 24시간 이내에 Alloggiati Web만을 통해 숙박객의 인적 사항을 관할 경찰청에 보내야 합니다. 24시간 미만 체류라면 도착 즉시 보냅니다.

포털의 FAQ는 세 가지를 덧붙입니다.

항목 FAQ 내용
신원 제109조는 "si può dare alloggio esclusivamente a persone munite di un documento idoneo ad attestarne l'identità"라고 정하며, 2021년에 개정된 2013년 장관령에 따라 Alloggiati Web으로 통보
단기 임대 제109조의 의무는 30일 미만 임대에도 적용(Decree-Law 113/2018 제19조의2)
영수증 "Le ricevute vanno conservate per cinque anni in formato digitale."

5년은 포털의 영수증, 즉 데이터를 보냈다는 증빙에 대한 기간이라는 점에 유의하세요. FAQ는 숙박객 데이터 자체의 보관에 대해서는 아무 말도 하지 않습니다.

정확한 항목 목록은 2013년 장관령의 기술 부속서에 있습니다. 포털은 이를 PDF 파일로만 공개하며, 이 글을 위해 원문 그대로 읽을 수 없었기에 항목별 분류는 생략했습니다. 이탈리아용 양식을 만들기 전에 포털 자체의 매뉴얼과 코드 표("Manuali"와 "Scarica tabelle" 페이지)에서 목록을 가져오세요. 인용한 텍스트로 확인되는 것은 숙박객의 "generalità"가 전송된다는 점과 모든 숙박객에게 신분증이 필요하다는 점입니다.

세 나라 비교

스페인 이탈리아 독일
근거 Real Decreto 933/2021 TULPS 제109조, DM 7/01/2013(DM 16/09/2021로 개정) BMG §§ 29, 30
등록 대상 모든 숙박객. 14세 초과 전원이 서명 모든 숙박객. 신분증 필요 외국인 숙박객. 동반자는 인원수만
이름, 생년월일, 국적 예 "Generalità"(정확한 목록은 2013년 부속서) 예
성별 예 2013년 부속서 아니요
서류 번호 번호와, 스페인 카드의 경우 지지체 번호 2013년 부속서 여권 일련번호
주소 상주지의 전체 주소 2013년 부속서 예
전화와 이메일 예 2013년 부속서 아니요
결제 데이터 예 인용한 텍스트에 언급 없음 아니요
기한 24시간 24시간. 24시간 미만 체류는 도착 시 전송 기한 없음. 도착 당일 등록표 서명
경로 전자 통신 Alloggiati Web만 현장 보관, 요청 시 제시
보관 서비스 종료 후 3년 영수증 5년 출발 후 1년, 이후 3개월 이내 폐기

이는 인용한 텍스트를 읽은 결과이며 법률 자문이 아닙니다. 독일에서 § 30(3) BMG가 허용하듯, 지역 세금 규정이 항목을 더 추가할 수 있습니다.

체크인 양식이 서류에서 미리 채울 수 있는 것

표를 보면 겹치는 부분이 분명합니다. 세 나라 모두에서 서류에서 나오는 항목은 같은 핵심입니다. 이름, 성, 생년월일, 국적, 서류 번호, 서류 종류입니다. 스페인은 성별도 요구합니다. 주소, 전화, 이메일, 체류 일정, 동반자, 결제 같은 나머지는 숙박객이나 예약 시스템에서 받습니다.

여기서 간단한 양식 설계가 나옵니다.

  • 정보 면 사진으로 서류 항목을 미리 채운다. 숙박객은 입력하는 대신 확인만 합니다. 값이 서류 자체에서 오므로 스페인 칙령 제4.3조의 정확성 의무와 § 30(2) BMG의 대조 의무에도 대응합니다.
  • MRZ 검증 숫자를 활용한다. 여권의 기계 판독 영역에는 서류 번호, 생년월일, 유효기간에 대한 검증 숫자가 있습니다. 잘못 읽거나 잘못 입력한 숫자는 검증에 실패하므로, 양식은 기록을 보내기 전에 이를 표시할 수 있습니다. MRZ 검사기에서 각 숫자의 계산 방법을 볼 수 있습니다.
  • 스페인 숙박객에게는 성 분리를 보여 준다. 여권에는 성 항목이 하나, 양식에는 두 개입니다.
  • 그 나라가 필요로 하는 것만 묻는다. 독일 등록표에는 § 30(2) 항목만 "ausschließlich" 담기므로 스페인의 전화와 이메일 항목을 가져오지 마세요.
  • 기한을 워크플로에 넣는다. 스페인과 이탈리아는 24시간, 독일은 도착 당일이 기준입니다.

doc.cheap의 역할

doc.cheap은 POST /v1/scans로 호출 한 번에 이미지 한 장을 읽고 서류 항목을 JSON으로 돌려줍니다. holder.given_names, holder.surname, holder.birth_date, holder.sex, holder.nationality, 그리고 document.kind, document.number, document.expiry_date, document.issuing_state입니다. mrz.status 필드는 검증 숫자가 passed인지 failed인지 알려 주고, mrz.reason은 무엇이 실패했는지 알려 줍니다. 호출 방법은 여권 인식 가이드(영어)에서 설명합니다.

문서에 있는 샌드박스 키를 사용해 체크인 양식에 매핑하는 예시입니다.

const response = await fetch("https://api.doc.cheap/v1/scans", {
  method: "POST",
  headers: {
    Authorization: "Bearer sk_sandbox_public",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ image: base64Photo, reference: bookingId }),
});
const scan = await response.json();

const prefill = {
  firstName: scan.holder?.given_names,
  surname: scan.holder?.surname,
  sex: scan.holder?.sex,
  birthDate: scan.holder?.birth_date,
  nationality: scan.holder?.nationality,
  documentType: scan.document?.kind,
  documentNumber: scan.document?.number,
  documentExpiry: scan.document?.expiry_date,
  issuingState: scan.document?.issuing_state,
  mrzOk: scan.mrz?.status === "passed",
};
// 주소, 전화, 이메일, 체류 일정, 동반자는 숙박객에게서 받는다.

API는 양식 항목을 채울 뿐입니다. 경찰, 스페인 당국, Alloggiati Web에는 아무것도 보내지 않습니다. 전송은 숙소 관리 시스템이 맡습니다. 서류 이미지 자체는 절대 저장되지 않으며, 스캔 옵션에서 retain_hours: 0을 설정하면 결과도 전혀 저장되지 않습니다.

공개 샌드박스 키로 계정 없이 바로 사용해 볼 수 있습니다. doc.cheap에는 매월 100건의 무료 인식이 포함되며, 여권 OCR API 비교에서는 다른 호스팅형 서비스를 공개 가격과 함께 정리했습니다.

위의 모든 법적 서술은 링크된 BOE, gesetze-im-internet.de, Alloggiati Web 페이지에서 인용했습니다. doc.cheap에 관한 모든 서술은 그 코드와 대조해 확인했습니다.

여러분께 질문: 여러분의 체크인 흐름은 이 나라들 중 둘 이상을 지원하나요? 나라마다 다른 항목은 어떻게 처리하나요? 아래 댓글로 알려 주세요.