Đọc đề trắc nghiệm API
Đọc đề trắc nghiệm từ file Word hoặc văn bản ("Câu 1. … A. … B. …") kèm đáp án, xuất JSON, GIFT, Aiken, Moodle XML hoặc CSV cho Quizizz, Kahoot.
Gửi đề dạng file Word (.docx) hoặc văn bản soạn theo cách quen thuộc: câu hỏi bắt đầu bằng Câu 1. / Câu 1: (hoặc 1. nếu đề không dùng chữ "Câu"), phương án A. B. … mỗi phương án một dòng hoặc cùng một dòng cách nhau bằng tab, các ý đúng sai đánh a) b) …. Bộ đọc theo cấu trúc đề thi THPT 2025: PHẦN I nhiều lựa chọn, PHẦN II đúng sai, PHẦN III trả lời ngắn, và giữ đoạn đọc hiểu ("Đọc đoạn văn sau và trả lời câu hỏi từ 4 đến 5") thành nhóm câu.
Đáp án đúng được nhận theo cách giáo viên thường đánh dấu: chữ cái phương án được gạch chân, chữ màu đỏ hoặc tô nền, chữ cái in đậm khi các phương án khác không đậm, dấu * trước chữ cái, dòng Đáp án: B dưới câu hỏi, hoặc bảng đáp án cuối đề (BẢNG ĐÁP ÁN, 1.B 2.C …, bảng số câu và chữ cái, ĐSĐS cho câu đúng sai). Lời giải (Lời giải:, Hướng dẫn giải:) được giữ lại. Ảnh trong file Word trả về dạng data URI, trong nội dung có dấu [img:img1]; công thức Word (OMML) được đọc thành chữ.
format chuyển kết quả sang: gift và moodle_xml cho Moodle, aiken, quizizz_csv (mẫu bảng tính của Quizizz), kahoot_csv (các cột của mẫu Kahoot) và csv chung cho Google Sheets / tiện ích Google Forms. Phần cảnh báo liệt kê câu thiếu đáp án, trùng số câu hoặc trùng nội dung, số phương án bất thường. File được xử lý trong bộ nhớ, không lưu lại.
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mặc định | |
|---|---|---|---|---|---|
file | body | file | không | Đề thi dạng .docx (hoặc .txt): multipart, body thô hoặc file_base64. | |
text | body | string | không | Nội dung đề dạng văn bản thay cho file. | |
format | body|query | string | không | json | json, gift, aiken, moodle_xml, quizizz_csv, kahoot_csv hoặc csv (kết quả trong output). |
images | body|query | boolean | không | true | false: chỉ liệt kê ảnh, không trả data URI. |
time_seconds | body|query | number | không | 30 | Thời gian mỗi câu khi xuất Quizizz / Kahoot. |
Ví dụ
curl -X POST "https://apibox.io.vn/v1/vn-quiz-parse" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Câu 1. Thủ đô của Việt Nam là\nA. TP. Hồ Chí Minh\t*B. Hà Nội\nC. Đà Nẵng\tD. Huế\nCâu 2. 2 + 2 = ?\nA. 3\nB. 4\nC. 5\nD. 6\nĐáp án: B\nLời giải: 2 + 2 = 4."}'const res = await fetch('https://apibox.io.vn/v1/vn-quiz-parse', {
method: 'POST',
headers: {
Authorization: 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"text": "Câu 1. Thủ đô của Việt Nam là\nA. TP. Hồ Chí Minh\t*B. Hà Nội\nC. Đà Nẵng\tD. Huế\nCâu 2. 2 + 2 = ?\nA. 3\nB. 4\nC. 5\nD. 6\nĐáp án: B\nLời giải: 2 + 2 = 4."
}),
});
const data = await res.json();
console.log(data);import requests
res = requests.post(
"https://apibox.io.vn/v1/vn-quiz-parse",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={"text": "Câu 1. Thủ đô của Việt Nam là\nA. TP. Hồ Chí Minh\t*B. Hà Nội\nC. Đà Nẵng\tD. Huế\nCâu 2. 2 + 2 = ?\nA. 3\nB. 4\nC. 5\nD. 6\nĐáp án: B\nLời giải: 2 + 2 = 4."},
timeout=30,
)
print(res.json())<?php
$ch = curl_init('https://apibox.io.vn/v1/vn-quiz-parse');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_API_KEY', 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => '{"text":"Câu 1. Thủ đô của Việt Nam là\\nA. TP. Hồ Chí Minh\\t*B. Hà Nội\\nC. Đà Nẵng\\tD. Huế\\nCâu 2. 2 + 2 = ?\\nA. 3\\nB. 4\\nC. 5\\nD. 6\\nĐáp án: B\\nLời giải: 2 + 2 = 4."}',
]);
$response = curl_exec($ch);
print_r(json_decode($response, true));Kết quả trả về
{
"question_count": 2,
"by_type": {
"multiple_choice": 2
},
"answered": 2,
"sections": [
{
"index": 0,
"title": "",
"type": null
}
],
"groups": [],
"warnings": [],
"answer_keys": [],
"questions": [
{
"number": 1,
"section": 0,
"type": "multiple_choice",
"points": null,
"stem": "Thủ đô của Việt Nam là",
"options": [
{
"label": "A",
"text": "TP. Hồ Chí Minh"
},
{
"label": "B",
"text": "Hà Nội"
},
{
"label": "C",
"text": "Đà Nẵng"
},
{
"label": "D",
"text": "Huế"
}
],
"answer": [
"B"
],
"answer_text": null,
"answer_source": "asterisk",
"explanation": null,
"group": null
},
{
"number": 2,
"section": 0,
"type": "multiple_choice",
"points": null,
"stem": "2 + 2 = ?",
"options": [
{
"label": "A",
"text": "3"
},
{
"label": "B",
"text": "4"
},
{
"label": "C",
"text": "5"
},
{
"label": "D",
"text": "6"
}
],
"answer": [
"B"
],
"answer_text": null,
"answer_source": "answer_line",
"explanation": "2 + 2 = 4.",
"group": null
}
]
}
Ứng dụng
- Nhập đề Word vào LMS, app ôn thi
- Chuyển file .docx của giáo viên sang Quizizz, Kahoot, Moodle
- Kiểm tra đề thiếu đáp án trước khi in
- Xây ngân hàng câu hỏi từ các file Word có sẵn
Hỏi đáp
Đáp án đúng phải đánh dấu thế nào?
Cách nào phổ biến cũng được: gạch chân hoặc tô đỏ / tô nền phương án đúng, dấu "*" trước chữ cái, dòng "Đáp án: B", hoặc bảng đáp án cuối đề. Kiểu đánh dấu đầu tiên tách được phương án trong câu sẽ được dùng.
Có đọc được file .doc cũ và công thức MathType không?
File .doc cần lưu lại thành .docx. Công thức Word được đọc thành chữ; đối tượng MathType chỉ lấy được ảnh xem trước.
Có hỗ trợ cấu trúc đề THPT 2025 không?
Có: nhận đủ phần I (4 phương án), phần II (ý a–d đúng sai, đáp án dạng ĐSĐS) và phần III (trả lời ngắn), số câu đánh lại từ đầu trong mỗi phần.
API liên quan
Metadata ảnh & EXIF
Đọc kích thước, định dạng, thông tin EXIF máy ảnh, thông số chụp và vị trí GPS của ảnh JPEG, PNG, WebP, HEIC, AVIF, GIF… – upload file hoặc qua URL.
PDFMetadata PDF
Đọc metadata file PDF: số trang, tiêu đề, tác giả, phần mềm tạo, ngày tạo, phiên bản PDF, mã hoá, số trường form và khổ giấy từng trang (A4, Letter…).
PDF₫Tạo PDF báo giá, phiếu thu
Tạo PDF báo giá, phiếu thu, đơn đặt hàng, hoá đơn bán hàng gọn đẹp từ JSON: tiếng Việt chuẩn, thuế GTGT, số tiền bằng chữ và mã VietQR để thanh toán.