from pathlib import Path
import json
import subprocess

key = '1MUX4KoG3WbG8Yhl6smWsJBrndtJp2JS'
proxy = 'http://127.0.0.1:18081'
p = Path('/tmp/mistral_probe_verify.pdf')
content = b'BT /F1 24 Tf 72 720 Td (restart verify) Tj ET\n'
objs=[b'<< /Type /Catalog /Pages 2 0 R >>',b'<< /Type /Pages /Kids [3 0 R] /Count 1 >>',b'<< /Type /Page /Parent 2 0 R /MediaBox [0 0 612 792] /Resources << /Font << /F1 4 0 R >> >> /Contents 5 0 R >>',b'<< /Type /Font /Subtype /Type1 /BaseFont /Helvetica >>',b'<< /Length '+str(len(content)).encode()+b' >>\nstream\n'+content+b'endstream']
data=bytearray(b'%PDF-1.4\n%\xe2\xe3\xcf\xd3\n'); offsets=[0]
for i,o in enumerate(objs,1):
    offsets.append(len(data)); data.extend(f'{i} 0 obj\n'.encode()); data.extend(o); data.extend(b'\nendobj\n')
x=len(data); data.extend(f'xref\n0 {len(objs)+1}\n'.encode()); data.extend(b'0000000000 65535 f \n')
for off in offsets[1:]: data.extend(f'{off:010d} 00000 n \n'.encode())
data.extend(f'trailer\n<< /Size {len(objs)+1} /Root 1 0 R >>\nstartxref\n{x}\n%%EOF\n'.encode())
p.write_bytes(data)

subprocess.run([
    'curl','--max-time','45','-sS','-o','/tmp/mistral_upload_verify.json','-x',proxy,
    '-H',f'Authorization: Bearer {key}','-F','purpose=ocr',f'-F','file=@{str(p)}',
    'https://api.mistral.ai/v1/files'
], check=True)
file_id = json.load(open('/tmp/mistral_upload_verify.json'))['id']
subprocess.run([
    'curl','--max-time','45','-sS','-o','/tmp/mistral_url_verify.json','-x',proxy,
    '-H',f'Authorization: Bearer {key}',
    f'https://api.mistral.ai/v1/files/{file_id}/url?expiry=24'
], check=True)
url = json.load(open('/tmp/mistral_url_verify.json'))['url']
payload = {
    'model': 'mistral-ocr-latest',
    'document': {'type': 'document_url', 'document_url': url},
    'include_image_base64': False,
}
Path('/tmp/mistral_ocr_verify_req.json').write_text(json.dumps(payload))
res = subprocess.run([
    'curl','--max-time','120','-sS','-o','/tmp/mistral_ocr_verify_resp.json','-w','%{http_code}','-x',proxy,
    '-H',f'Authorization: Bearer {key}','-H','Content-Type: application/json',
    '--data','@/tmp/mistral_ocr_verify_req.json','https://api.mistral.ai/v1/ocr'
], check=True, capture_output=True, text=True)
resp = json.load(open('/tmp/mistral_ocr_verify_resp.json'))
pages = resp.get('pages') or []
print(json.dumps({'ocr_status': res.stdout.strip(), 'page_count': len(pages), 'preview': (pages[0].get('markdown') if pages else '')[:120]}, ensure_ascii=False))
