Rút trích thông tin từ cv

Xin chào mọi người, hiện em đang nghiên cứu một ứng dụng ngôn ngữ JAVA rút trích thông tin từ CV (file doc, pdf…) -> JSON object ví dụ:

Xin hỏi mọi người e có thể dùng kỹ thuật nào trong trường hợp này ạ?

This post was flagged by the community and is temporarily hidden.

Cái bài này mình có thấy trên Hackathon trên TopITWork :smiley: nghĩ cũng chưa ra :D, hóng xem thế nào.

1 Like

cũng tham gia à m . :smile:

cái này dùng nhận dạng ảnh, rồi đưa về text rồi đưa ra, nếu sinh viên làm thì hơi khoai nên có 1 team. Lý thuyết là thế nhưng làm thật nhiều vấn đề. Cứ làm theo hướng đó xem sao

Cách 1:

1: make a POJO class

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author quand
 */
public class JsonPOJO {
    private String _dob;
    private String _gender;
    private String _status;
    private String _national;
    private String _mobile;
    private String _email;

    public JsonPOJO() {
    }

    public JsonPOJO(String _dob, String _gender, String _status, String _national, String _mobile, String _email) {
        this._dob = _dob;
        this._gender = _gender;
        this._status = _status;
        this._national = _national;
        this._mobile = _mobile;
        this._email = _email;
    }

    public String getDob() {
        return _dob;
    }

    public void setDob(String _dob) {
        this._dob = _dob;
    }

    public String getGender() {
        return _gender;
    }

    public void setGender(String _gender) {
        this._gender = _gender;
    }

    public String getStatus() {
        return _status;
    }

    public void setStatus(String _status) {
        this._status = _status;
    }

    public String getNational() {
        return _national;
    }

    public void setNational(String _national) {
        this._national = _national;
    }

    public String getMobile() {
        return _mobile;
    }

    public void setMobile(String _mobile) {
        this._mobile = _mobile;
    }

    public String getEmail() {
        return _email;
    }

    public void setEmail(String _email) {
        this._email = _email;
    }
    
    
    public String toString(){
    StringBuilder sb = new StringBuilder();
    sb.append("\nDate of Birth").append(_dob);
    sb.append("\nGender: ").append(_gender);
    sb.append("\nMarital Status: ").append(_status);
    sb.append("\nNationality: ").append(_national);
    sb.append("\nMobile: ").append(_mobile);
    sb.append("\nE-Mail: ").append(_email);
    return sb.toString();
    }
}

Read file and pasrse to Json

	
To convert text file in JSON you can use tha JACKSON OBJECT MAPPER jar in your code.

Create a simple Json pojo. We will read JSON string from a file and map it to JsonPOJOclass.

After THIS POJO CLASS Finally here is the example to convert JSON string value to java object
```java

public class TranferFileToJson {
    public static void main(String a[]){

    ObjectMapper mapper = new ObjectMapper();

		JsonPOJO jO = new JsonPOJO("Auhust 29th 1990","Female","Single","Viet nam", "0905.555.666","[email protected]");

		try {
			// Convert object to JSON string and save into a file directly
			mapper.writeValue(new File("D:\\staff.json"), jO);

			// Convert object to JSON string
			String jsonInString = mapper.writeValueAsString(jO);
			System.out.println(jsonInString);

			// Convert object to JSON string and pretty print
			jsonInString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(jO);
			System.out.println(jsonInString);

		} catch (JsonGenerationException e) {
			e.printStackTrace();
		} catch (JsonMappingException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
}
}
1 Like

Cách 2: Đọc cái này
with

   JsonParser parser = new JsonParser();
   JsonObject o = (JsonObject)parser.parse(one_by_one_line_from_text_file);
1 Like

Chơi thử chứ t ko bik gì hết :frowning:

1 Like

Bạn có thể nói rõ hơn ko ? :slight_smile:

Cảm ơn anh nhé. Nhưng cái vấn đề ở đây e thắc mắc là làm sao chúng ta có thể đặt ra 1 quy luật ví dụ:
“Auhust 29th 1990” thì sẽ tự động đặt vào biến _dob. Làm sao chúng ta có thể lấy dc chính xác những chuỗi và đặt vào đúng cái biến của nó nhỉ?

Hiện mình đã đọc đc cái content của cái file (pdf hoặc doc) r đó bạn, nhưng ko bik làm sao để rút trích chính xác cái chuỗi vào đúng cái biến của nó?

This post was flagged by the community and is temporarily hidden.

Hix, nếu chỉ có một mẫu thì tốt quá, nhưng làm cho nhiều trường hợp lun á. CV mỗi người viết mỗi kiểu mà huhu.

Về xử lý đọc file thì mình không rành lắm nhưng mình nghĩ nếu bạn lấy được đoạn text như hình bạn chụp thì bạn đọc từng dòng sau đó tách nội dung bằng hàm split truyền vào dấu “:” ổn không nhỉ

Mỗi người viết 1 kiểu nhưng mẫu CV phải như nhau

Nếu không thể tạo cho data 1 mẫu nhận dạng thì điều này là không thể.
Và, Ít nhât bạn cần show 2 CV ví dụ cho mình xem

Non nớt và ngu ý:

  • Bạn làm cái bộ validations cho các thông tin trên.
  • Đọc thông tin từ file và check với từng validation. Khớp thì ăn.

Mình đang học nha, đoán chơi thôi chứ chưa bít code thế nào.:grinning:

1 Like

Có thể dùng một library có học máy để classified các value vào đúng các key.
Ps: bạn OCR từ file bằng gì vậy

Như mình đã nói, bạn cần đưa ít nhất 2 mẫu CV mình mới có thể làm chính xác được.
Điều này phụ thuộc vào file CV của bạn.

Giả sử tất cả các file cv có 1 dấu hiệu để nhận biết. Đó là trong CV sẽ có 1 dòng chứa string Date_of_Birth:

------------------------
CV1
               Mẫu CV1
Date_of_Birth: 
Name:
Gender:
Marital Status:
Carrier:
------------------------
CV2
               Mẫu CV2
Name:
Date_of_Birth: 
Gender:
Marital Status:
Mobile:
 -------------------------

Trường hợp 1:
Không theo dòng

Ở CV1 Date_of_Birth: dòng 1 nhưng CV 2 Date_of_Birth: dòng 2

Và công việc bạn cần làm đó là đọc từng dòng rồi tìm dòng nào có String "Date_of_Birth: : sau đó tách chuỗi sau ra đưa vào Object class POJO mình hướng dẫn ở trên.

  //code ví dụ
  String line = // đọc theo từng dòng 
 -> giả sử line = "Dat of birth: August 29th 1990 "
  if(line.contains("Dat of birth:")){
           String[] data= line.split(":");
           String dob = data[1]; // August 29th 1990 
  }
  if(line.contains("Gender")){
           String[] data= line.split(":");
           String gender= data[1];
  }
...... 4 fields còn lại cũng như vậy
         //tao 1 object lưu thông tin 
          POJO pojo = new POJO(dob, gender, status, national, mobile, email);
                            "August 29th 1990" // đã được gán vào dob 
   //chính là dòng này
   POJO pojo = new POJO(dob, gender, status, national, mobile, email);

Trường hợp 2:

Các mẫu CV giống nhau.

Tất cả dòng 1 đều là Date_of_Birth: . Bạn chỉ việc đọc dòng 1 -> tách chuỗi ở sau "Date_of_Birth: " và gán vào object

2 Likes

Chắc chắn là CV khác nhau (hackathon của topitwork), có thể bị sai chính tả các key Daet of birth chẳng hạn
Ps: mà POJO là gì thế nhỉ, thấy bạn voodoo cũng thường hay đặt tên vậy

This post was flagged by the community and is temporarily hidden.

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?