Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Pobieranie stringu z DOCX / DOC / PDF, jak wykonać?
casperii
post 16.10.2018, 15:17:54
Post #1





Grupa: Zarejestrowani
Postów: 680
Pomógł: 28
Dołączył: 14.08.2014

Ostrzeżenie: (0%)
-----


Panowie przeglądając popularne serwisy o pracę , zauważyłem, że na podstawie uploadowanego CV uzupełnia się profil użytkownika.
Czy ktoś z obecnych phpowców jest w stanie mi wytłumaczyć z jakiej biblioteki ów serwisy korzystają ?
Go to the top of the page
+Quote Post
werdan
post 16.10.2018, 20:12:39
Post #2





Grupa: Zarejestrowani
Postów: 354
Pomógł: 100
Dołączył: 14.11.2013
Skąd: Płock

Ostrzeżenie: (0%)
-----


Daj przykład takiego serwisu.

Jesteś pewien, że to z nadesłanego pliku, a nie z powiązanego konta Linkedin lub goldenline?
Go to the top of the page
+Quote Post
casperii
post 16.10.2018, 21:01:05
Post #3





Grupa: Zarejestrowani
Postów: 680
Pomógł: 28
Dołączył: 14.08.2014

Ostrzeżenie: (0%)
-----


praca.pl , pracuj.pl możesz stworzyć swój profil z nadesłanego pliku CV.
Już trochę rozgryzłem, doc, docx, pdf po uploadzie jest konwertowany , szukane są słowa typu imię i nazwisko "Jan Jakiś" i to jest wyciągane jako $wyciaglem[0]
tylko ,żeby "rozebrać" całe CV na interesujące nas frazy to trochę je*ania musisz zrobić
Go to the top of the page
+Quote Post
viking
post 17.10.2018, 04:13:28
Post #4





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


To zwykły xml spakowany


--------------------
Go to the top of the page
+Quote Post
batman
post 17.10.2018, 10:48:26
Post #5





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




W przypadku docx (i innych pochodnych formatów) plik to tak naprawdę archiwum zip, które można łatwo rozpakować. W środku znajdziesz wszystkie dołączone obrazki oraz właściwą treść w postaci pliku (lub kilku plików) xml. Wystarczy wiedzieć czego i gdzie szukać i masz gotowe automatyczne uzupełnianie formularza z pliku Worda. W przypadku plików pdf, które są zwykłym skanem jest nieco więcej zabawy. Zazwyczaj robiłem to tak: przy pomocy narzędzia convert (część ImageMagic) konwertowałem pdf do pliku graficznego, a następnie przy pomocy tesseract ocr wyciągałem tekst z obrazka. Na koniec zostało przepuścić tekst przez prosty algorytm nlp i miałem wyciągnięte wszystkie dane. Nie wiem, czy tak robią w podanych przez Ciebie firmach, podejrzewam, że mają podobny workflow.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
casperii
post 17.10.2018, 19:10:39
Post #6





Grupa: Zarejestrowani
Postów: 680
Pomógł: 28
Dołączył: 14.08.2014

Ostrzeżenie: (0%)
-----


@batman możesz podać przykład ?

dla docx coś takiego znalazłem:
  1. function extractDocxText($url,$file_name){
  2. $docx = get_url($url);
  3. file_put_contents("tempf.docx",$docx);
  4. $xml_filename = "word/document.xml"; //content file name
  5. $zip_handle = new ZipArchive;
  6. $output_text = "";
  7. if(true === $zip_handle->open("tempf.docx")){
  8. if(($xml_index = $zip_handle->locateName($xml_filename)) !== false){
  9. $xml_datas = $zip_handle->getFromIndex($xml_index);
  10. //file_put_contents($input_file.".xml",$xml_datas);
  11. $replace_newlines = preg_replace('/<w:p w[0-9-Za-z]+:[a-zA-Z0-9]+="[a-zA-z"0-9 :="]+">/',"\n\r",$xml_datas);
  12. $replace_tableRows = preg_replace('/<w:tr>/',"\n\r",$replace_newlines);
  13. $replace_tab = preg_replace('/<w:tab\/>/',"\t",$replace_tableRows);
  14. $replace_paragraphs = preg_replace('/<\/w:p>/',"\n\r",$replace_tab);
  15. $replace_other_Tags = strip_tags($replace_paragraphs);
  16. $output_text = $replace_other_Tags;
  17. }else{
  18. $output_text .="";
  19. }
  20. $zip_handle->close();
  21. }else{
  22. $output_text .=" ";
  23. }
  24. chmod("tempf.docx", 0777); unlink(realpath("tempf.docx"));
  25. //save to file or echo content
  26. file_put_contents($file_name,$output_text);
  27. echo $output_text;
  28. }
  29.  
  30. print extractDocxText('link/cv.docx','test.docx');


lecz to pokazuje mi tak jak by całe CV jako 1 string ?
Czyli , że miałbym wyciągać interesujące mnie frazy i rozbijać ten string ? Bo nic innego nie przychodzi mi do głowy jak by to miało wyglądać
Go to the top of the page
+Quote Post
batman
post 17.10.2018, 22:34:37
Post #7





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Kiedyś opisałem na blogu jak wygląda parsowanie plików docx - https://archive.wilgucki.pl/2010/05/jak-odc...docx-w-php.html (niestety po kilku migracjach starego bloga, część zasobów zaginęła, inne wskazują na niepoprawną lokalizację, więc strona jest nieco rozjechana. Muszę to w końcu naprawić). Jest to nieco inne podejście niż w kodzie, który wkleiłeś, ale koniec końców i tak musisz przeparsować tekst, aby wyciągnąć dane. Jeśli format danych jest niezmienny, wystarczy napisać prosty parser bazujących na stałych elementach. Jeśli jednak chcesz parsować różne dokumenty, będziesz musiał pobawić się wyciąganie danych z tekstu. Z pomocą przyjdzie spaCy, bardzo prosta w użyciu biblioteka do nlp.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
markuz
post 18.10.2018, 10:57:44
Post #8





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

Ostrzeżenie: (0%)
-----


pdf2html


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 13:14