So sánh văn bản API

So sánh hai đoạn văn bản theo dòng, từ, ký tự, câu hoặc JSON; nhận danh sách thay đổi, tỉ lệ giống nhau và bản diff dạng unified.

POSThttps://apibox.io.vn/v1/text-diff

Gửi văn bản gốc qua a (hoặc old) và văn bản mới qua b (hoặc new). API trả về danh sách changes (mỗi phần là added, removed hoặc unchanged kèm nội dung), stats gồm số lượng thêm, xoá, giữ nguyên, tỉ lệ similarity (%) và identical khi không có thay đổi.

Chọn mức so sánh bằng mode: lines (mặc định, đếm theo dòng và trả thêm bản unified giống git diff), words, chars, sentences, hoặc json để so sánh cấu trúc hai tài liệu JSON sau khi định dạng lại. ignore_case và ignore_whitespace giúp bỏ qua khác biệt hoa thường và khoảng trắng. Với các mode khác, unified=true sẽ thêm bản patch; a_name, b_name và context (0-50 dòng, mặc định 3) điều chỉnh tiêu đề và số dòng ngữ cảnh.

Tổng độ dài hai văn bản tối đa 2.000.000 ký tự (body request tối đa 4 MB).

Tham số

TênVị tríKiểuBắt buộcMặc định
abodystringcóVăn bản gốc. Tên khác: old.
bbodystringcóVăn bản mới. Tên khác: new.
modebody|querystringkhônglinesĐơn vị so sánh: lines, words, chars, sentences hoặc json.
ignore_casebody|querybooleankhôngfalseBỏ qua khác biệt chữ hoa/thường (lines, words, chars).
ignore_whitespacebody|querybooleankhôngfalseBỏ qua khoảng trắng đầu/cuối dòng ở mode lines, và thay đổi khoảng trắng ở mode words.
unifiedbody|querybooleankhôngfalseTrả thêm bản unified diff cho các mode khác lines (mode lines luôn có).
contextbody|querynumberkhông3Số dòng ngữ cảnh trong unified diff (0-50).
a_namebody|querystringkhôngaTên file gốc trong tiêu đề unified diff.
b_namebody|querystringkhôngbTên file mới trong tiêu đề unified diff.

Ví dụ

curl -X POST "https://apibox.io.vn/v1/text-diff" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"a":"one\ntwo\nthree","b":"one\n2\nthree\nfour"}'

Kết quả trả về

{
  "mode": "lines",
  "identical": false,
  "similarity": 50,
  "stats": {
    "added": 2,
    "removed": 1,
    "unchanged": 2,
    "unit": "lines"
  },
  "changes": [
    {
      "type": "unchanged",
      "value": "one\n",
      "count": 1
    },
    {
      "type": "removed",
      "value": "two\n",
      "count": 1
    },
    {
      "type": "added",
      "value": "2\n",
      "count": 1
    },
    {
      "type": "unchanged",
      "value": "three\n",
      "count": 1
    },
    {
      "type": "added",
      "value": "four\n",
      "count": 1
    }
  ],
  "unified": "===================================================================\n--- a\n+++ b\n@@ -1,3 +1,4 @@\n one\n-two\n+2\n three\n+four\n"
}

Ứng dụng

  • Hiển thị những thay đổi giữa hai phiên bản tài liệu, hợp đồng
  • So sánh response API hoặc file cấu hình JSON khi viết test
  • Tạo bản patch unified diff từ backend
  • Đo mức độ giống nhau của hai văn bản (kiểm tra trùng lặp)

Hỏi đáp

Có lấy được bản diff kiểu git không?

Có. Ở mode mặc định lines, trường unified luôn chứa bản patch; với các mode khác hãy thêm unified=true.

Làm sao so sánh hai object JSON?

Dùng mode=json và gửi hai tài liệu dạng chuỗi JSON trong a và b. Chúng được định dạng lại rồi so sánh theo dòng, nên khác biệt về cách trình bày bị bỏ qua.

Tỉ lệ giống nhau được tính thế nào?

Bằng số đơn vị giữ nguyên chia cho tổng số giữ nguyên cộng với số lớn hơn giữa thêm và xoá, tính theo %. Đơn vị là dòng ở mode lines/json, ký tự ở các mode khác.

API liên quan

Bắt đầu với 1.000 request miễn phí mỗi tháng. Nhận API key miễn phí →