NAV Navbar
Logo
cURL Python

OpenFPT API

Giới thiệu

Open FPT là chương trình của FPT nhắm tới việc thúc đẩy việc chia sẻ, và kết nối các công nghệ và kết quả nghiên cứu của FPT (và các công ty thành viên) ra ngoài cộng đồng.

Cổng dịch vụ công nghệ OpenFPT là một thành tố chính trong chương trình này. Thông qua cổng này, các công nghệ trong tập đoàn FPT sẽ được mở ra cho cộng đồng sử dụng dưới dạng API (web services). Các nhà phát triển và cộng đồng có thể khai thác, sáng tạo ra các dịch vụ cho người dùng mà chính FPT cũng không nghĩ tới và làm được.

Dù bạn là công ty khởi nghiệp, hay doanh nghiệp, hoặc nhà phát triển độc lập, chúng tôi tin rằng bạn sẽ tìm được những dịch vụ hữu ích từ OpenFPT.

Các API hiện có

Security, Commerce & Infrastructure

Tên Mô tả Tài liệu
CyRadar API tra cứu xem 1 website có phải là lừa đảo (phishing) hoặc chứa mã độc hay không Click here
FBusInfo API tra cứu thông tin xe bus trực tuyến Click here
Traffic Situation API cung cấp thông tin tình trạng giao thông Click here

Language & Speech

Tên Mô tả Tài liệu
Speech Synthesis API tổng hợp tiếng nói từ văn bản tiếng Việt              Click here
FPT Speech Recognition Nhận dạng giọng nói tiếng Việt Click here

Vision & Data Insights

Tên Mô tả Tài liệu
ID Recognition Nhận dạng và trích xuất thông tin từ CMT hoặc CCCD của Việt Nam Click here

Authentication

Để sử dụng được các API ở trên cần phải có header api_key trong HTTP request. API key này được lấy bằng cách đăng kí tài khoản Developer tại đây và tạo app.






































CyRadar

Giới thiệu

CyRadar API là một dịch vụ trực tuyến nhằm mục đích kiểm tra các tài nguyên trên Internet có phải độc hại hay không. CyRadar có thể kiểm tra URL để xem các thành phần này có phải là website lừa đảo (phishing) hoặc chứa mã độc.

Ứng dụng

CyRadar API có thể ứng dụng được trong nhiều lĩnh vực:

API: Check Hash File

Sample Request

curl -X GET -H "api_key:xxxxxxxxxxxxxxxxxxx" "http://api.openfpt.vn/cyradar/file/200cff95f41b197e14476c1eeb18a097"

Sample Response: File is malicious

{
    "message": "",
    "code": 0,
    "data": true
}

Sample Request

curl -X GET -H "api_key:xxxxxxxxxxxxxxxxxxx" "http://api.openfpt.vn/cyradar/file/5af10c005214dd08f47949cd530a94d1"

Sample Response: File not found in malicious database (clean)

{
    "message": "Hash not found",
    "code": 404
}

Kiểm tra file độc hại hay không dựa vào hash MD5 hoặc SHA256 của file.

HTTP Request

GET http://api.openfpt.vn/cyradar/file/{hash}

URL Parameters

Parameter Required Description
hash Yes Hash MD5 hoặc SHA256 của file cần kiểm tra

Response

JSON kết luận file được kiểm tra có độc hại hay không. (Ví dụ như hình bên)

API: Check URL

Sample Request

curl -X GET -H "api_key:xxxxxxxxxxxxxxxxxxx" "http://api.openfpt.vn/cyradar?url=https://infected.malwaregraph.com"

Sample Response: Malicious

{
  "conclusion": "danger",
  "domain": "infected.malwaregraph.com",
  "threat": [
    "malicious"
  ],
  "uri": "http://infected.malwaregraph.com"
}

Sample Request

curl -X GET -H "api_key:xxxxxxxxxxxxxxxxxxx" "http://api.openfpt.vn/cyradar?url=https://vnexpress.net"

Sample Response: Safe

{
  "conclusion": "safe",
  "domain": "vnexpress.net",
  "uri": "https://vnexpress.net",
  "threat": []
}

Kiểm tra website độc hại

HTTP Request

GET http://api.openfpt.vn/cyradar

Query Parameters

Parameter Required Description
url Yes Nhập url của website mà bạn muốn kiểm tra

Response

JSON chứa kết quả check xem link có phải độc hại hay không (tham khảo ví dụ bên cạnh).

FBusInfo

Giới thiệu

FBusinfo là hệ thống cung cấp thông tin về các nhà chờ xe bus, tại mỗi nhà chờ xe bus hệ thống có thể dự đoán giờ nào có xe bus đến nhà chờ.

Ứng dụng

Có thể xây dựng các ứng dụng mobile cũng câp cho người dùng thông tin nhà chờ xe bus tìm kiếm các tuyến xe phù hợp và thông báo khi có xe bus xắp đến

API: Get stops

Sample Request

curl -X GET -H "Cache-Control: no-cache"
"http://api.openfpt.vn/fbusinfo/businfo/getstopsinbounds/106.68340787887573/10.768808774874774/106.72228231430054/10.786346643944889"

Sample Response:

  [
    {
    "StopId": 28,
    "Code": "Q1 016",
    "Name": "Chợ Củ",
    "StopType": "Nhà chờ",
    "Zone": "Quận 1",
    "Ward": null,
    "AddressNo": "89A",
    "Street": "Hàm Nghi",
    "SupportDisability": "",
    "Status": "Đang khai thác",
    "Lng": 106.70196,
    "Lat": 10.770822,
    "Search": "CC 89A HN",
    "Routes": "01, 02, 03, 04, 12, 18, 19, 20, 35, 45, 56, 61-6, 75, 88"
   }
  ]

Lấy thông tin của các nhà chờ xe bus trong 1 khu vực hình chữ nhật thông qua tọa độ 2 đỉnh của hình chữ nhật đó.

HTTP Request

GET http://api.openfpt.vn/fbusinfo/businfo/getstopsinbounds/{lng1}/{lat1}/{lng2}/{lat2}

URL Parameters

Parameter Description
lng1 Tọa độ kinh tuyến của đỉnh thứ nhất.
lat1 Tọa độ vĩ tuyến của đỉnh thứ nhất.
lng2 Tọa độ kinh tuyến của đỉnh thứ hai.
lat2 Tọa độ vĩ tuyến của đỉnh thứ hai.

Bạn có thể tạo dùng công cụ geojson để tạo các đỉnh trên bản đồ trực quan.

Diagram

Response

JSON chứa 1 mảng thông tin các nhà chờ xe bus (tham khảo ví dụ bên cạnh).

Field Description Example
StopId ID nhà chờ xe bus 28
Code Mã nhà chờ xe bus “Q1 016”
Name Tên “Chợ Củ”
StopType Kiểu của bến là nhà chờ hay là điểm chờ, cột mốc.v.v “Nhà chờ”
Zone Vùng, quận “Quận 1”
Ward Phường xã
AddressNo Địa chỉ nhà chờ “89A”
Street Phố, tên đường “Hàm Nghi”
SupportDisability Hỗ trợ người khuyết tật
Status Trạng thái của nhà chờ “Đang khai thác”
Lng Tọa độ kinh tuyến của nhà chờ 106.70196
Lat Tọa độ vĩ tuyến của nhà chờ 10.770822
Search Tag hỗ chợ tìm kiếm “CC 89A HN”
Routes Danh sách mã các tuyến xe đi qua nhà chờ. các mã cách nhau bới dấu phẩy “01, 02, 03, 04, 12, 18, 19, 20, 35, 45, 56, 61-6, 75, 88”

API: Get next bus

Sample Request

curl -X GET -H "Cache-Control: no-cache" "http://api.openfpt.vn/fbusinfo/prediction/predictbystopid/199"

Sample Response:

[
  {
    "arrs": [
      {
        "d": 339.97608336271685,
        "dts": "2017-05-05T14:52:20+07:00",
        "s": 0,
        "sts": 0,
        "t": 90,
        "v": "53N3326"
      },
      {
        "d": 19106.985494202854,
        "dts": "2017-05-05T14:52:16+07:00",
        "s": 21,
        "sts": 0,
        "t": 4205,
        "v": "53N3327"
      }
    ],
    "r": 40,
    "rN": "Bến Thành - Chợ Hiệp Thành",
    "rNo": "18",
    "s": 199,
    "sN": "[Q1 076] Chùa Ông",
    "v": 80,
    "vN": "Bến Thành"
  },
  {
    "arrs": [
      {
        "d": 582.70730707523273,
        "dts": "2017-05-05T14:52:01+07:00",
        "s": 14,
        "sts": 0,
        "t": 128,
        "v": "51B21809"
      },
      {
        "d": 1726.4347459190881,
        "dts": "2017-05-05T14:52:08+07:00",
        "s": 0,
        "sts": 0,
        "t": 417,
        "v": "51B21920"
      }
    ],
    "r": 57,
    "rN": "Bến Thành - Thới An",
    "rNo": "36",
    "s": 199,
    "sN": "[Q1 076] Chùa Ông",
    "v": 114,
    "vN": "Bến Thành"
  }
]

Dự đoán những xe sắp đến một nhà chờ xe bus.

Một nhà chờ xe bus có thể có nhiều tuyến xe đi qua, hệ thống sẽ dự đoán ứng với mỗi tuyến xe có hai xe gần nhất sắp đến nhà chờ xe bus theo thời gian và theo khoảng cách của xe tới nhà chờ.

HTTP Request

GET http://api.openfpt.vn/fbusinfo/prediction/predictbystopid/{bustopid}

URL Parameters

Parameter Description
bustopid ID của nhà chờ xe bus được lấy từ API Get stops ở trên

Response

JSON chứa thông tin các chuyến xe bus sắp tới tại nhà chờ (tham khảo ví dụ bên cạnh).

Field Description Example
d Khoảng cách (m) 205.1229454289012
dts Thời gian tính từ thời điểm bắt GPS “2016-07-18T09:35:51+07:00”
s Vận tốc (km/h) 0.0
sts Trạng thái của xe bus 0
t Thời gian số giây sẽ đến nhà chờ 95
v Biển số xe “53N3377”

Speech Synthesis

Giới thiệu

Tổng hợp tiếng nói (Speech synthesis) là bài toán cơ bản trong bài toán lớn về giao tiếp giữa người và máy (Human-Machine Interface).

Với tham vọng riêng của mình, Ban công nghệ FPT (FTI) đã nỗ lực nghiên cứu suốt gần 5 năm qua để cho ra mắt sản phẩm FPT Speech Synthesis. Sản phẩm là sự kết hợp của:

Được đánh giá là hệ thống tổng hợp tiếng nói tiếng Việt có chất lượng tốt nhất thị trường hiện nay, hệ thống tổng hợp tiếng Việt mới của FPT đang được mở trên Open FPT (http://openfpt.vn/). Các nhà phát triển có thể khai thác nguồn tài nguyên này để xây dựng ứng dụng của riêng mình trên các nền tảng khác nhau. Cho đến thời điểm này, đã có nhiều sản phẩm như “Giao thông thông minh” do FPT IS phát triển, hệ thống thông báo thông tin tài chính của VHT, hệ thống sinh ra video tự động từ báo điện tử, … đang sử dụng Speech Synthesis API của Open FPT và nhận được rất nhiều phản hồi tích cực từ người dùng.

Demo: https://fpt.ai/tts/

Ứng dụng

Hướng dẫn tổng hợp giọng nói trên cổng Open FPT

Hướng dẫn sử dụng API bằng công cụ Postman (https://www.getpostman.com/)

API: FPT Speech Synthesis (version 5)

HTTP Request

Sample Request

curl -X POST \
-H "api_key: xxxxxxxxxxxxx" \
-H "speed: 0" \
-H "voice: banmai" \
-d 'Bạn thấy dịch vụ TTS của FPT có hay không?' \
"http://api.openfpt.vn/text2speech/v5"

POST http://api.openfpt.vn/text2speech/v5

POST Body

Chứa nội dung text cần tổng hợp tiếng nói (tham khảo ví dụ bên cạnh)

Header Parameters

Parameter Required Default Description
voice No female Xác định các giọng đọc. Có 2 loại giọng đọc mới và cũ:
  • Giọng mới có chất lượng tốt hơn nhưng mất thời gian hơn để tổng hợp, gồm có các giọng banmai (nữ miền bắc), leminh (nam miền bắc) và lannhi (nữ miền nam).
  • Giọng cũ gồm có male (nam miền bắc), female (nữ miền bắc) và hatieumai (nữ miền nam) và ngoclam (nữ Huế)
speed No 0 Điều chỉnh tốc độ đọc. Giá trị từ -3 đến 3 để xác định tốc độ đọc: -3 (rất chậm) / -2 (khá chậm) / -1 (chậm) / 0 (bình thường) / 1 (nhanh) / 2 (khá nhanh) / 3 (rất nhanh)

Response

Sample Response: Success

{
  "async": "https://static.openfpt.vn/public/tts/female.0.5f00062c60e85cafcf5bd52e5d4040ff.mp3",
  "error": 0,
  "message": "The content will be returned after a few seconds under the async link.",
  "request_id": "4b5b15285847e83acbb3beb945434453"
}

Sample Response: Error

{
  "error": 1,
  "message": "Internal server error happened",
}

JSON chứa kết quả trả về (tham khảo ví dụ bên cạnh), trong đó có chứa link của file audio tổng hợp tiếng nói.

Do hệ thống cần nhiều thời gian để xử lý một văn bản, nên file này có thể chưa tồn tại ở thời điểm response.

API: Get Remaining Characters

Sample Request

curl -X GET \
-H "api_key:xxxxxxxxxxxxxxxxxxx" \
"https://dev.openfpt.vn/balance/tts" 

Sample Response: Success

{
  "error": "0",
  "remaining_free": 10000,
  "remaining_paid": 1000000
}

Sample Response: Error

{
  "error": "API Key is invalid.",
  "remaining_free": -1,
  "remaining_paid": -1
}

Truy vấn số ký tự FREE và số ký tự mất phí còn lại trên ứng dụng sử dụng dịch vụ Speech Synthesis.

HTTP Request

GET https://dev.openfpt.vn/balance/tts

Response

JSON chứa nội dung thông tin về số tự ký tự FREE và số ký tự mất phí còn lại. (Ví dụ như hình bên)

Speech Recognition

Giới thiệu

Tiếng nói là công cụ giao tiếp phổ thông và cũng là đối tượng để nghiên cứu trong nhiều ngành khoa học khác nhau. Tiếng nói con người là vô tận. Cùng một người, một hoàn cảnh phát âm và cùng một từ, tại hai thời điểm phát âm khác nhau, sẽ cho ra hai mẫu khác nhau.

Do phạm rộng của tiếng nói, nên FSR hay còn gọi là FPT Speech Recognition tập trung vào nhận dạng các câu cơ bản để điều khiển các thiết bị trong gia dụng. Nhằm đạt mục tiêu nhận dạng âm thanh có độ chính xác cao.

Ứng dụng

Dùng cho các ứng dụng điều khiển IoT, hay các phần mêm gia lệnh bằng giọng nói.

Hướng dẫn sử dụng API bằng công cụ Postman (https://www.getpostman.com/)

API: Speech Recognition

Sample Request

curl -X POST "https://api.openfpt.vn/fsr" -H "api_key:xxxxxxxxxxxxxxxxxxx" -T "/path/of/file/voice" 

Sample Response: Normal (Chú ý: tiếng Việt trong JSON được encode bằng UTF-8)

{
    "status": 0,
    "hypotheses": [{
            "utterance": "ch\u00e0o m\u1eebng b\u1ea1n"
        }
    ],
    "id": "adab73e2-a1d9-46c2-ba5e-30e575b6c3fc"
}

Sample Response: Error

{
  "status": 9,
  "message": "Not available.",
  "id": "8afce928-8b87-4114-bc6f-33d1eaac4fe5"
}

Từ dữ liệu đầu vào từ một file âm thanh (WAV hoặc MP3), API trả về dữ liệu dạng JSON có chứa text tiếng Việt được nhận dạng từ file âm thanh đó.

HTTP Request

POST https://api.openfpt.vn/fsr

POST body

File âm thanh

Response

JSON chứa kết quả text được nhận dạng hoặc message lỗi.

Tên trường Mô tả
status Response status (integer), xem code bên dưới
hypotheses Mảng chứa chi tiết các câu được nhận dạng
id Request id để tham khảo về sau

Status codes:

Code Description
0 Thành công
1 Không có âm thanh
2 Bị hủy
9 Hệ thống bận

Traffic Situation

Giới thiệu

FPT IS nghiên cứu giải pháp cổng thông tin giao thông thông minh Cổng thông tin giao thông thông minh của FPT IS khi đưa vào ứng dụng sẽ giúp người dân xác định lộ trình, tránh khu vực kẹt xe, ngập nước giảm thiểu tình trạng ùn tắc giao thông, ô nhiễm môi trường…

Giúp Developer có thể xây dựng cho mình ứng dùng map trực quan một cách dễ dàng. Chỉ cần nhập tọa độ x,y (là tọa độ kinh tuyến và vĩ tuyến) cùng với tỷ lệ Zoom theo ý muốn là có thể lấy được các image của map tình trạng giao thông.

Ứng dụng

API: Get traffic status

Sample Request

curl -X GET -H "api_key: xxxxxxxxxxxxxxxxxxx" -H "Cache-Control: no-cache" "http://api.openfpt.vn/trafficsituation/traffic/17/104383/61594/fpt.png"

Hàm lấy về ảnh png bản đồ nền bao gồm tên đường, bản đồ này đã được chỉnh sửa màu sắc lại để dễ dàng thể hiện tình trạng lên.

Chú ý: Khi chồng lớp giao thông lên lớp bản đồ sẽ thì có thể dẫn đến phần màu của “tình trạng” đè lên đường nên không thấy tên đường. Trong trường hợp đó thì sử dụng 2 API Get transport textGet transport no text bên dưới để lấy các lớp bản đồ có và không có tên đường rồi chồng lên nhau.

Bạn có thể xem một application trực quan tại đây

Diagram

HTTP Request

GET http://api.openfpt.vn/trafficsituation/traffic/{z}/{x}/{y}/fpt.png

URL Parameters

Parameter Description
z Thông số tỉ lệ phóng to thu nhỏ
x Tọa độ theo kinh độ.
y Tọa độ theo vĩ độ.

Response

Dữ liệu binary ảnh dạng png:

Diagram

API: Get transport no text

Sample Request

curl -X GET -H "api_key: xxxxxxxxxxxxxxxxxxx" -H "Cache-Control: no-cache" "http://api.openfpt.vn/trafficsituation/transport/17/104383/61594/notext.png"

Hàm lấy về ảnh png nền bản đồ không có tên đường.

HTTP Request

GET http://api.openfpt.vn/trafficsituation/transport/{z}/{x}/{y}/notext.png

URL Parameters

Parameter Description
z Thông số tỉ lệ phóng to thu nhỏ
x Tọa độ theo kinh độ.
y Tọa độ theo vĩ độ.

Response

Dữ liệu binary ảnh nền bản độ không có tên đường dạng png:

Diagram

API: Get transport text

Sample Request

curl -X GET -H "api_key: xxxxxxxxxxxxxxxxxxx" -H "Cache-Control: no-cache" "http://api.openfpt.vn/trafficsituation/transport/17/104383/61594/text.png"

Lấy về ảnh png bản đồ chỉ có tên đường.

HTTP Request

GET http://api.openfpt.vn/trafficsituation/transport/{z}/{x}/{y}/text.png

URL Parameters

Parameter Description
z Thông số tỉ lệ phóng to thu nhỏ
x Tọa độ theo kinh độ.
y Tọa độ theo vĩ độ.

Response

Dữ liệu binary ảnh nền bản độ chỉ có tên đường dạng png:

Diagram

FPT Vietnamese ID Card Recognition

Giới thiệu

Nội dung của tài liệu là hướng dẫn chính thức và chi tiết cho mọi người bao gồm các kĩ thuật viên, lập trình viên và cả người dùng phổ thông sử dụng hệ thống nhận dạng Chứng Minh Thư (CMT) và Căn Cước Công Dân (CCCD) của FPT.AI (gọi tắt là FVI).

Trong tài liệu này, để cho ngắn gọn, CMT sẽ được dùng để chỉ chung CMT loại cũ và CCCD.

Văn bản bao gồm:

Ngoài ra, văn bản còn cung cấp một số ví dụ về cách sử dụng API viết bằng cURL và Python.

Hiep3 blur

Hệ thống FVI

Tính năng

Chức năng chính của hệ thống FVI là nhận dạng và trích dẫn thông tin từ CMT loại cũ hoặc CCCD của Việt Nam.

Hiện tại, khách hàng có thể gửi ảnh CMT hoặc CCCD đến hệ thống FVI, và hệ thống sẽ trả lại các thông tin trích dẫn từ CMT hoặc CCCD ví dụ: số CMT, tên, ngày tháng năm sinh, địa chỉ, giới tính, tôn giáo, …

Để giúp khách hàng đánh giá được mức độ tin cậy của hệ thống, đi kèm với kết quả trích xuất là probability (theo %) của mỗi trường thông tin.

Tốc độ xử lý

Tốc độ xử lí của hệ thống FVI phụ thuộc vào độ phân giải của bức ảnh khách hàng gửi lên.

Tốc độ trung bình xử lí như sau

Độ chính xác

Độ chính xác của hệ thống FVI cho tổng thể các trường thông tin là trên 90% với ảnh đầu vào đáp ứng đủ các tiêu chí.

Độ chính xác cho từng trường thông tin cụ thể như sau:

Các quy định về ảnh đầu vào

Các quy định

Một số ví dụ

Good

Cccd

Error1

Error2

Hướng dẫn sử dụng API

Authentication

Để authorize, có thể dùng code như sau:

import requests

API_ENDPOINT = "https://api.openfpt.vn/cmt"

auth = {'api_key': 'xxxxxxx'}

r = requests.post(API_ENDPOINT, files=/path/to/image/file, headers=auth)
# Truyền api_key vào header với cURL command  
curl -X POST 
  https://api.openfpt.vn/cmt
  -H "api_key: xxxxxxx"

Thay cụm “xxxxxxx” bằng API key đã tạo.

Hiện tại hệ thống FVI đã được hết nối với FPT Gateways, do đó đế có thể sử dụng, khách hàng cần tạo 1 account trên developer portal và sau đó tạo một API key để có thể gửi request tới gateway (mặc định mỗi API key tạo mới chỉ có thể gửi 50 requests).

API key cần phải được nhúng trong header của tất cả API requests như dưới đây:

api_key: xxxxxxx

Nhận dạng CMT/CCCD từ file image form-data

import requests

API_ENDPOINT = "https://api.openfpt.vn/cmt"

auth = {'api_key': 'xxxxxxx'}
file = {'image': open(/path/to/image/file, 'rb')}

r = requests.post(API_ENDPOINT, files=file, headers=auth)
# Truyền api_key vào header với cURL command  
curl -X POST 
  https://api.openfpt.vn/cmt
  -H "api_key: xxxxxxx"
  -F image=@/path/to/image/file

Thay cụm “xxxxxxx” bằng API key đã tạo.

Đây là phương pháp sử dụng hệ thống bằng cách gửi ảnh CMT dạng form-data tới API endpoint. Khách hàng cần đặt key image cho file ảnh trong body của request.

Hướng dẫn gửi request bằng phần mềm POSTMAN như sau:

Header

Header

Body

Body

Nhận dạng CMT/CCCD từ URL

import requests

API_ENDPOINT = "https://api.openfpt.vn/cmt"

payload = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; 
           name=\"image_url\"\r\n\r\nlink/to/image\r\n
           ------WebKitFormBoundary7MA4YWxkTrZu0gW--"
auth = {
    'content-type': "multipart/form-data; 
                     boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
    'api_key': "xxxxxxx"}

response = requests.request("POST", API_ENDPOINT, data=payload, headers=auth)
# Truyền api_key vào header với cURL command  
curl -X POST 
  https://api.openfpt.vn/cmt
  -H "api_key: xxxxxxx"
  -F "image_url=/link/to/image"

Thay cụm “xxxxxxx” bằng API key đã tạo.

Đây là phương pháp sử dụng hệ thống bằng cách gửi một đường link ảnh CMT tới API endpoint. Khách hàng cần đặt key image_url cho đường link trong body của request.

Hướng dẫn gửi request bằng phần mềm POSTMAN như sau:

Body

Body url

Nhận dạng CMT/CCCD từ string base64

import requests

API_ENDPOINT = "https://api.openfpt.vn/cmt"

payload = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; 
           name=\"image_base64\"\r\n\r\nstring/base64/of/image/goes/here\r\n
           ------WebKitFormBoundary7MA4YWxkTrZu0gW--"
auth = {
    'content-type': "multipart/form-data; 
                     boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
    'api_key': "xxxxxxx"}

response = requests.request("POST", API_ENDPOINT, data=payload, headers=auth)
# Truyền api_key vào header với cURL command  
curl -X POST 
  https://api.openfpt.vn/cmt
  -H "api_key: xxxxxxx"
  -F "image_base64=/string/base64/of/image"

Thay cụm “xxxxxxx” bằng API key đã tạo.

Đây là phương pháp sử dụng hệ thống bằng cách gửi ảnh CMT dưới dạng string base64 tới API endpoint. Khách hàng cần đặt key image_base64 cho string base64 trong body của request.

Hướng dẫn gửi request bằng phần mềm POSTMAN như sau:

Body

Body base64

Trích xuất CMT/CCCD và nhận diện khuôn mặt trên ảnh

import requests

API_ENDPOINT = "https://api.openfpt.vn/cmt"

payload = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; 
           name=\"image\"; 
           filename=\"/path/to/image/file\"\r\nContent-Type: 
           image/jpeg\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\n
           Content-Disposition: form-data; 
           name=\"face\"\r\n\r\n1\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--"

auth = {
    'content-type': "multipart/form-data; 
                     boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
    'api_key': "xxxxxxx"}

response = requests.request("POST", API_ENDPOINT, data=payload, headers=auth)
# Truyền api_key vào header với cURL command  
curl -X POST 
  https://api.openfpt.vn/cmt
  -H "api_key: xxxxxxx"
  -F image=@/path/to/image/file
  -F face=1

Thay cụm “xxxxxxx” bằng API key đã tạo.

Đây là một chức năng của hệ thống FVI nhằm trích xuất ảnh cropped của CMT và ảnh mặt người có trên CMT dựa vào các thuật toán Object DetectionFace Recognition.

Để sử dụng chức năng này, ngoài các key thông thường như image, image_urlimage_base64 như mô tả ở trên, khách hàng cần đặt thêm key face với giá trị bằng 1 trong body của request.

Sau khi gửi request thành công, trong kết quả trả về sẽ có thêm cropped_idcardface là các đường link tới ảnh cropped của CMT và ảnh mặt người (xem hình bên dưới). Vì vấn đề bảo mật, các đường link này sẽ chỉ tồn tại trong vòng 5 phút kể từ khi trả về kết quả.

Hướng dẫn gửi request bằng phần mềm POSTMAN như sau:

Body

Body face

Minh họa kết quả trả về của ảnh cropped và ảnh face:

Ảnh gốc

Maxresdefault

Ảnh cropped

Cropped

Ảnh face

Face

API Responses

API Response

{   
    "errorCode" : x, 
    "errorMessage" : "xxxx",   
    "data" : [xxxx] 
} 

Hệ thống FVI có khả năng trích xuất tất cả các loại thông tin có trên các loại CMT cũ/mới hoặc CCCD của Việt Nam (phần thông tin về đặc điểm nhận dạng ở mặt sau chỉ được trả về nếu có yêu cầu riêng từ khách hàng). Hệ thống phân chia kết quả trả về thành 4 loại: CMT cũ mặt trước/sauCCCD mặt trước/sau (CMT loại mới được xếp cùng loại với CCCD).

Sau khi gửi request thành công, hệ thống sẽ trả về một file json bao gồm thông tin dạng text trên CMT sử dụng format như ở bên.

(Chi tiết các lỗi có thể xảy ra bao gồm cả errorCodeerrorMessage xem ở phần Errors)

Mặt trước CMT loại cũ

Response của mặt trước CMT loại cũ

{
  "errorCode" : 0, 
  "errorMessage" : "",
  "data": [
    {   
      "id": "xxxx", 
      "id_prob": "xxxx", 
      "name": "xxxx", 
      "name_prob": "xxxx", 
      "dob": "xxxx", 
      "dob_prob": "xxxx", 
      "sex": "N/A", 
      "sex_prob": "N/A", 
      "nationality": "N/A", 
      "nationality_prob": "N/A", 
      "home": "xxxx", 
      "home_prob": "xxxx", 
      "address": "xxxx", 
      "address_prob": "xxxx", 
      "doe": "N/A", 
      "doe_prob": "N/A",
      "type": "xxxx" 
    } 
  ]
}

Mặt trước CMT loại cũ bao gồm 5 trường thông tin gồm:

Mặt sau CMT loại cũ

Response của mặt sau CMT loại cũ

{
  "errorCode" : 0, 
  "errorMessage" : "",
  "data": [
    {   
      "religion_prob": "xxxx", 
      "religion": "xxxx", 
      "ethnicity_prob": "xxxx", 
      "ethnicity": "xxxx", 
      "features": "xxxx",
      "features_prob": "xxxx",
      "issue_date": "xxxx", 
      "issue_date_prob": "xxxx",              
      "issue_loc_prob": "xxxx", 
      "issue_loc": "xxxx",
      "type": "xxxx"
    } 
  ]
}

Mặt sau CMT loại cũ bao gồm 4 trường thông tin gồm:

Mặt trước CCCD

Response của mặt trước CCCD

{
  "errorCode" : 0, 
  "errorMessage" : "",
  "data": [
    {   
      "id": "xxxx", 
      "id_prob": "xxxx", 
      "name": "xxxx", 
      "name_prob": "xxxx", 
      "dob": "xxxx", 
      "dob_prob": "xxxx", 
      "sex": "xxxx", 
      "sex_prob": "xxxx", 
      "nationality": "xxxx", 
      "nationality_prob": "xxxx", 
      "home": "xxxx", 
      "home_prob": "xxxx", 
      "address": "xxxx", 
      "address_prob": "xxxx", 
      "doe": "xxxx", 
      "doe_prob": "xxxx",
      "type": "xxxx" 
    } 
  ]
}

Ngoài các trường thông tin giống như mặt trước của CMT loại cũ, mặt trước CCCD có thêm 3 trường thông tin:

Ở CMT loại mới thì quốc tịch nationality được thay bằng dân tộc enthnicity

Mặt sau CCCD

Response của mặt sau CCCD

{
  "errorCode" : 0, 
  "errorMessage" : "",
  "data": [
    {   
      "religion_prob": "N/A", 
      "religion": "N/A", 
      "ethnicity_prob": "N/A", 
      "ethnicity": "N/A",
      "features": "xxxx",
      "features_prob": "xxxx", 
      "issue_date": "xxxx", 
      "issue_date_prob": "xxxx",              
      "issue_loc_prob": "N/A", 
      "issue_loc": "N/A",
      "type": "xxxx"
    } 
  ]
}

Mặt sau CCCD chỉ bao gồm 2 trường thông tin:

Errors

Hệ thống FVI sử dụng các error code như sau:

Error Code Meaning
1 Invalid Parameters or Values! – Sai thông số trong request (ví dụ không có key hoặc ảnh trong request body).
2 Failed in cropping – CMT trong ảnh bị thiếu góc nên không thể crop về dạng chuẩn.
3 Unable to find ID card in the image – Hệ thống không tìm thấy CMT trong ảnh hoặc ảnh có chất lượng kém (quá mờ, quá tối/sáng).
5 No URL in the request – Request sử dụng key image_url nhưng giá trị bỏ trống.
6 Failed to open the URL! – Request sử dụng key image_url nhưng hệ thống không thể mở được URL này.
7 Invalid image file – File gửi lên không phải là file ảnh.
8 Bad data – File ảnh gửi lên bị hỏng hoặc format không được hỗ trợ.
9 No string base64 in the request – Request sử dụng key image_base64 nhưng giá trị bỏ trống.
10 String base64 is not valid – Request sử dụng key image_base64 nhưng string cung cấp không hợp lệ.

FPT Vietnamese Driving License Recognition

Giới thiệu

Nội dung của tài liệu là hướng dẫn chính thức và chi tiết cho mọi người bao gồm các kĩ thuật viên, lập trình viên và cả người dùng phổ thông sử dụng hệ thống nhận dạng Giấy Phép Lái Xe (GPLX) của FPT.AI (gọi tắt là FVD).

Trong tài liệu này, để cho ngắn gọn, GPLX sẽ được dùng để chỉ chung cả hai loại Giấy Phép Lái Xe cũ và mới.

Văn bản bao gồm:

Ngoài ra, văn bản còn cung cấp một số ví dụ về cách sử dụng API viết bằng cURL và Python.

Anhdep1

Hệ thống FVD

Tính năng

Chức năng chính của hệ thống FVD là nhận dạng và trích dẫn thông tin từ Giấy Phép Lái Xe cũ và mới của Việt Nam.

Hiện tại, khách hàng có thể gửi ảnh Giấy Phép Lái Xe cũ và mới đến hệ thống FVD, và hệ thống sẽ trả lại các thông tin trích dẫn từ Giấy Phép Lái Xe cũ và mới ví dụ: số GPLX, tên, ngày tháng năm sinh, địa chỉ, nơi cấp, ngày cấp, …

Để giúp khách hàng đánh giá được mức độ tin cậy của hệ thống, đi kèm với kết quả trích xuất là probability (theo %) của mỗi trường thông tin.

Tốc độ xử lý

Tốc độ xử lí của hệ thống FVD phụ thuộc vào độ phân giải của bức ảnh khách hàng gửi lên.

Tốc độ trung bình xử lí như sau

Độ chính xác

Độ chính xác của hệ thống FVD cho tổng thể các trường thông tin là trên 90% với ảnh đầu vào đáp ứng đủ các tiêu chí.

Độ chính xác cho từng trường thông tin cụ thể như sau:

Các quy định về ảnh đầu vào

Các quy định

Một số ví dụ

Anhdep2

Anhdep3

Error2

Error1

Hướng dẫn sử dụng API

Authentication

Để authorize, có thể dùng code như sau:

import requests

API_ENDPOINT = "https://api.openfpt.vn/blx"

auth = {'api_key': 'xxxxxxx'}

r = requests.post(API_ENDPOINT, files=/path/to/image/file, headers=auth)
# Truyền api_key vào header với cURL command  
curl -X POST 
  https://api.openfpt.vn/blx
  -H "api_key: xxxxxxx"

Thay cụm “xxxxxxx” bằng API key đã tạo.

Hiện tại hệ thống FVD đã được hết nối với FPT Gateways, do đó đế có thể sử dụng, khách hàng cần tạo 1 account trên developer portal và sau đó tạo một API key để có thể gửi request tới gateway (mặc định mỗi API key tạo mới chỉ có thể gửi 50 requests).

API key cần phải được nhúng trong header của tất cả API requests như dưới đây:

api_key: xxxxxxx

Nhận dạng GPLX từ file image form-data

import requests

API_ENDPOINT = "https://api.openfpt.vn/blx"

auth = {'api_key': 'xxxxxxx'}
file = {'image': open(/path/to/image/file, 'rb')}

r = requests.post(API_ENDPOINT, files=file, headers=auth)
# Truyền api_key vào header với cURL command  
curl -X POST 
  https://api.openfpt.vn/blx
  -H "api_key: xxxxxxx"
  -F image=@/path/to/image/file

Thay cụm “xxxxxxx” bằng API key đã tạo.

Đây là phương pháp sử dụng hệ thống bằng cách gửi ảnh GPLX dạng form-data tới API endpoint. Khách hàng cần đặt key image cho file ảnh trong body của request.

Hướng dẫn gửi request bằng phần mềm POSTMAN như sau:

Header

P1

Body

P2

Nhận dạng GPLX từ URL

import requests

API_ENDPOINT = "https://api.openfpt.vn/blx"

payload = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; 
           name=\"image_url\"\r\n\r\nlink/to/image\r\n
           ------WebKitFormBoundary7MA4YWxkTrZu0gW--"
auth = {
    'content-type': "multipart/form-data; 
                     boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
    'api_key': "xxxxxxx"}

response = requests.request("POST", API_ENDPOINT, data=payload, headers=auth)
# Truyền api_key vào header với cURL command  
curl -X POST 
  https://api.openfpt.vn/blx
  -H "api_key: xxxxxxx"
  -F "image_url=/link/to/image"

Thay cụm “xxxxxxx” bằng API key đã tạo.

Đây là phương pháp sử dụng hệ thống bằng cách gửi một đường link ảnh GPLX tới API endpoint. Khách hàng cần đặt key image_url cho đường link trong body của request.

Hướng dẫn gửi request bằng phần mềm POSTMAN như sau:

Body

P3

API Responses

API Response

{
    "errorCode" : x,
    "errorMessage" : "xxxx",
    "data" : [xxxx]
}

Hệ thống FVD có khả năng trích xuất tất cả các loại thông tin có trên các loại GPLX của Việt Nam. Hệ thống phân chia kết quả trả về thành 3 loại: GPLX cũ mặt trước/sauGPLX mới mặt trước.

Sau khi gửi request thành công, hệ thống sẽ trả về một file json bao gồm thông tin dạng text trên GPLX sử dụng format như ở bên.

(Chi tiết các lỗi có thể xảy ra bao gồm cả errorCodeerrorMessage xem ở phần Errors)

Mặt trước GPLX loại cũ

Response của mặt trước GPLX loại cũ

{
  "errorCode" : 0,
  "errorMessage" : "",
  "data": [
    {
      "id": "xxxx",
      "id_prob": "xxxx",
      "name": "xxxx",
      "name_prob": "xxxx",
      "dob": "xxxx",
      "dob_prob": "xxxx",
      "nation": "xxxx",
      "nation_prob": "xxxx",
      "address": "xxxx",
      "address_prob": "xxxx",
      "place_issue": "xxxx",
      "place_issue_prob": "xxxx",
      "date": "xxxx",
      "date_prob": "xxxx",
      "doe": "xxxx",
      "doe_prob": "xxxx",
      "code": "xxxx",
      "code_prob": "xxxx"
      "type": "xxxx"
    }
  ]
}

Mặt trước GPLX loại cũ bao gồm các trường thông tin:

Mặt sau GPLX loại cũ

Response của mặt sau GPLX loại cũ

{
  "errorCode" : 0,
  "errorMessage" : "",
  "data": [
      {
          "class": [
              "xxxx"
          ],
          "class_prob": [
              "xxxx"
          ],
          "date": [
              "xxxx"
          ],
          "date_prob": [
              "xxxx"
          ]
          "type": "xxxx"
      }
      ]
}

Mặt sau GPLX loại cũ bao gồm các trường thông tin:

Mặt trước GPLX loại mới

Response của mặt trước GPLX loại mới


{
  "errorCode" : 0,
  "errorMessage" : "",
  "data": [
      {
          "id": "xxxx",
          "id_prob": "xxxx",
          "name": "xxxx",
          "name_prob": "xxxx",
          "dob": "xxxx",
          "dob_prob": "xxxx",
          "nation": "xxxx",
          "nation_prob": "xxxx",
          "address": "xxxx",
          "address_prob": "xxxx",
          "place_issue": "xxxx",
          "place_issue_prob": "xxxx",
          "date": "xxxx",
          "date_prob": "xxxx",
          "class": "xxxx",
          "class_prob": "xxxx",
          "doe": "xxxx",
          "doe_prob": "xxxx"
          "type": "xxxx"
      }
      ]
}

Ngoài các trường thông tin giống như mặt trước của GPLX loại cũ, mặt trước GPLX loại mới không có trường Mã số và có thêm trường thông tin:

Mặt sau GPLX loại mới

Response của mặt sau GPLX loại mới


{
  "errorCode" : 0,
  "errorMessage" : "",
  "data": [
      {
          "type": "xxxx"
      }
      ]
}

Trả về kết quả nhận diện loại giấy tờ.

Errors

Hệ thống FVD sử dụng các error code như sau:

Error Code Meaning
1 Invalid Parameters or Values! – Sai thông số trong request (ví dụ không có key hoặc ảnh trong request body).
2 Failed in classify! – GPLX trong ảnh bị thiếu góc nên không thể crop về dạng chuẩn.
3 Unable to find driving license card in the image – Hệ thống không tìm thấy GPLX trong ảnh hoặc ảnh có chất lượng kém (quá mờ, quá tối/sáng).
5 No URL in the request – Request sử dụng key image_url nhưng giá trị bỏ trống.
6 Failed to open the URL! – Request sử dụng key image_url nhưng hệ thống không thể mở được URL này.
7 Invalid image file – File gửi lên không phải là file ảnh.
8 Bad data – File ảnh gửi lên bị hỏng hoặc format không được hỗ trợ.

FPT Vietnamese Passport Recognition

Giới thiệu

Nội dung của tài liệu là hướng dẫn chính thức và chi tiết cho mọi người bao gồm các kĩ thuật viên, lập trình viên và cả người dùng phổ thông sử dụng hệ thống nhận dạng Hộ Chiếu (HC) của FPT.AI (gọi tắt là FVP).

Trong tài liệu này, để cho ngắn gọn, HC sẽ được dùng để chỉ Hộ Chiếu Việt Nam.

Văn bản bao gồm:

Ngoài ra, văn bản còn cung cấp một số ví dụ về cách sử dụng API viết bằng cURL và Python.

Ho chieu

Hệ thống FVP

Tính năng

Chức năng chính của hệ thống FVP là nhận dạng và trích dẫn thông tin từ HC của Việt Nam.

Hiện tại, khách hàng có thể gửi ảnh HC đến hệ thống FVP, và hệ thống sẽ trả lại các thông tin trích dẫn từ HC ví dụ: số HC, tên, ngày tháng năm sinh, nơi sinh, ngày cấp, …

Để giúp khách hàng đánh giá được mức độ tin cậy của hệ thống, đi kèm với kết quả trích xuất là probability (theo %) của mỗi trường thông tin.

Tốc độ xử lý

Tốc độ xử lí của hệ thống FVP phụ thuộc vào độ phân giải của bức ảnh khách hàng gửi lên.

Tốc độ trung bình xử lí như sau

Độ chính xác

Độ chính xác của hệ thống FVP cho tổng thể các trường thông tin là trên 90% với ảnh đầu vào đáp ứng đủ các tiêu chí.

Độ chính xác cho từng trường thông tin cụ thể như sau:

Các quy định về ảnh đầu vào

Các quy định

Một số ví dụ

Anhdep1

Error1

Error2

Hướng dẫn sử dụng API

Authentication

Để authorize, có thể dùng code như sau:

import requests

API_ENDPOINT = "https://api.fpt.ai/vision/passport/vnm"

auth = {'api_key': 'xxxxxxx'}

r = requests.post(API_ENDPOINT, files=/path/to/image/file, headers=auth)
# Truyền api_key vào header với cURL command  
curl -X POST 
  https://api.fpt.ai/vision/passport/vnm
  -H "api_key: xxxxxxx"

Thay cụm “xxxxxxx” bằng API key đã tạo.

Hiện tại hệ thống FVP đã được hết nối với FPT Gateways, do đó đế có thể sử dụng, khách hàng cần tạo 1 account trên developer portal và sau đó tạo một API key để có thể gửi request tới gateway (mặc định mỗi API key tạo mới chỉ có thể gửi 50 requests).

API key cần phải được nhúng trong header của tất cả API requests như dưới đây:

api_key: xxxxxxx

Nhận dạng HC từ file image form-data

import requests

API_ENDPOINT = "https://api.fpt.ai/vision/passport/vnm"

auth = {'api_key': 'xxxxxxx'}
file = {'image': open(/path/to/image/file, 'rb')}

r = requests.post(API_ENDPOINT, files=file, headers=auth)
# Truyền api_key vào header với cURL command  
curl -X POST 
  https://api.fpt.ai/vision/passport/vnm
  -H "api_key: xxxxxxx"
  -F image=@/path/to/image/file

Thay cụm “xxxxxxx” bằng API key đã tạo.

Đây là phương pháp sử dụng hệ thống bằng cách gửi ảnh HC dạng form-data tới API endpoint. Khách hàng cần đặt key image cho file ảnh trong body của request.

Hướng dẫn gửi request bằng phần mềm POSTMAN như sau:

Header

Pm1

Body

Pm2

Nhận dạng HC từ URL

import requests

API_ENDPOINT = "https://api.fpt.ai/vision/passport/vnm"

payload = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; 
           name=\"image_url\"\r\n\r\nlink/to/image\r\n
           ------WebKitFormBoundary7MA4YWxkTrZu0gW--"
auth = {
    'content-type': "multipart/form-data; 
                     boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
    'api_key': "xxxxxxx"}

response = requests.request("POST", API_ENDPOINT, data=payload, headers=auth)
# Truyền api_key vào header với cURL command  
curl -X POST 
  https://api.fpt.ai/vision/passport/vnm
  -H "api_key: xxxxxxx"
  -F "image_url=/link/to/image"

Thay cụm “xxxxxxx” bằng API key đã tạo.

Đây là phương pháp sử dụng hệ thống bằng cách gửi một đường link ảnh HC tới API endpoint. Khách hàng cần đặt key image_url cho đường link trong body của request.

Hướng dẫn gửi request bằng phần mềm POSTMAN như sau:

Body

Pm3

API Responses

API Response

{
    "errorCode" : x,
    "errorMessage" : "xxxx",
    "data" : [xxxx]
}

Hệ thống FVP có khả năng trích xuất các thông tin có trên HC của Việt Nam.

Sau khi gửi request thành công, hệ thống sẽ trả về một file json bao gồm thông tin dạng text trên HC sử dụng format như ở bên.

(Chi tiết các lỗi có thể xảy ra bao gồm cả errorCodeerrorMessage xem ở phần Errors)

Kết quả trả về bao gồm các trường thông tin:

Response của HC

{
  "errorCode" : 0,
  "errorMessage" : "",
  "data": [
    {
      "passport_number": "xxxx",
      "passport_number_prob": "xxxx",
      "name": "xxxx",
      "name_prob": "xxxx",
      "pob": "xxxx",
      "pob_prob": "xxxx",
      "sex": "xxxx",
      "sex_prob": "xxxx",
      "id_number": "xxxx",
      "id_number_prob": "xxxx",
      "doi": "xxxx",
      "doi_prob": "xxxx",
      "doe": "xxxx",
      "doe_prob": "xxxx"
    }
  ]
}

Errors

Hệ thống FVP sử dụng các error code như sau:

Error Code Meaning
1 Invalid Parameters or Values! – Sai thông số trong request (ví dụ không có key hoặc ảnh trong request body).
2 Failed in classify! – HC trong ảnh bị thiếu góc nên không thể crop về dạng chuẩn.
3 Unable to find passport in the image – Hệ thống không tìm thấy HC trong ảnh hoặc ảnh có chất lượng kém (quá mờ, quá tối/sáng).
5 No URL in the request – Request sử dụng key image_url nhưng giá trị bỏ trống.
6 Failed to open the URL! – Request sử dụng key image_url nhưng hệ thống không thể mở được URL này.
7 Invalid image file – File gửi lên không phải là file ảnh.
8 Bad data – File ảnh gửi lên bị hỏng hoặc format không được hỗ trợ.