์ํ์น ํฐ์นด(apache tika) ๋ก ์ปจํ ์ธ ํ์ฑํ๊ธฐ
PDF ์ ๋์์, ์ด๋ฏธ์ง๋ฑ ์ฌ๋ฌ ๋ฉํฐ ๋ฏธ๋์ด ํ์ผ์ ํ์ฑํด์ meta data ๋ฅผ ๊ฐ์ ธ์์ผ ํ๋ ์ผ์ด ์๊ฒผ์ต๋๋ค.
๋จผ์ PDF ๋ฅผ ํ์ฑํ๊ธฐ ์ํดย PHP ๋ก ๋ย ย https://www.pdfparser.org/ย ๋ฅผ ์ฌ์ฉํ์ผ๋ ๋ค์๊ณผ ๊ฐ์ ์๋ฌ ๋ฐ์ํ์ต๋๋ค.
PHP Warning: gzuncompress(): data error in myproj/vendor/tecnickcom/tcpdf/include/tcpdf_filters.php on line 357
ํ์ธํด ๋ณด๋ pdf parser ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ค์ํ PDF ํ์ผ์ ์ง์ํ์ง ์์๊ณ ์ด๋ฅผ ํด๊ฒฐํ ๋ฐฉ๋ฒ์ ์ฐพ๋ค ๋ณด๋ tika ํ๋ก์ ํธ๋ฅผ ์๊ฒ๋์์ต๋๋ค.
Tika ๋
Java ๋ก ๊ฐ๋ฐ๋ contents ๋ฅผ parsing ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ app ์ผ๋กย commandย line ๋ฐ GUI ๋ชจ๋๋ก ๋์ํ๋ app ์ RESTFul API ๋ก ๋์ํ๋ server ๊ฐ ์์ต๋๋ค.
์ค์น
์ปค๋งจ๋์ฉ app ๋ ๋ค์ ์ฃผ์์์ ๋ฐ์ผ๋ฉด ๋ฉ๋๋ค.
$ wget http://apache.mirror.cdnetworks.com/tika/tika-app-1.19.jar
standalone ์ผ๋ก ๊ตฌ๋ํ๊ณ RESTFul ๋ก ์์ฒญํ ์ ์๋ ์๋ฒ๋ ์๋๋ฐ ์๋ํํ๋ ค๋ฉด ์ด๊ฒ ๋ ํธ๋ฆฌํ๋ฉฐ ์๋ ์ฃผ์์์ ๋ฐ์ผ๋ฉด ๋ฉ๋๋ค.
$ wget http://apache.mirror.cdnetworks.com/tika/tika-server-1.19.jar
์๋ฒ๋ก ๊ตฌ๋ํ ๊ฒฝ์ฐ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ DB ์ ๋จ๊ธฐ๋ ค๋ฉด SQLite JDBC ๊ฐ ํ์ํ๋ฉฐ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ค์ด๋ฐ์์ ๋์ผํ ํด๋์ ์์น์ํค๋ฉด ๋ฉ๋๋ค.
$ wget http://central.maven.org/maven2/org/xerial/sqlite-jdbc/3.23.1/sqlite-jdbc-3.23.1.jar
์คํ
์คํ์ java -jar ์ต์ ์ผ๋ก ์๋์ฒ๋ผ ์คํํ๋ฉด ๋ฉ๋๋ค.
App
$ java -jar tika-app-1.19.jar
Server
$ java -jar tika-server-1.19.jar
SQLite JDBC ์ ์ฉํ๋ ค๋ฉด -cp ์ต์ ์ ์ถ๊ฐํฉ๋๋ค.
$ java -cp . -jar tika-server-1.19.jar
๊ธฐ๋ณธ ํฌํธ๋ 9998 ์ด๋ฉฐ ๋ค๋ฅธ ํฌํธ(Ex: 1234)๋ก ๊ตฌ๋ํ ๊ฒฝ์ฐ ์๋์ ๊ฐ์ด -p ์ต์ ์ ์ถ๊ฐํฉ๋๋ค.
$ java -cp . -jar tika-server-1.19.jar -h 0.0.0.0 -p 1234
์๋ฒ ์ ๋ณด
์๋ฒ๋ก ๊ตฌ๋ํ์ผ๋ฉด REST API ๋ก ์ฌ๋ฌ ๊ฐ์ง ์์ฒญ์ ํ ์ ์์ต๋๋ค.
version ํ์ธ
$ curl localhost:9998/version Apache Tika 1.19
detector ํ์ธ
$ curl localhost:9998/detectors
์ง์ํ๋ mime type ํ์ธ
$ curl localhost:9998/mime-types
์ปจํ ์ธ parsing
meta ๋ถ์
$ curl -T a.pdf localhost:9998/meta
ํน์ ํ๋๊ฐ ํ์ํ ๊ฒฝ์ฐ url ์ ํ๋๋ช ๋ช ์ํ๋ฉฐ ์๋๋ ์ ์ ํ๋๋ง ์ถ์ถํฉ๋๋ค.
$ curl -T a.pdf localhost:9998/meta/Author
PDF ๋ ๋๋ง ์๋๋ฅผ ๋น ๋ฅด๊ฒ ํ๋ ค๋ฉด JDK 8 ์ ์ฌ์ฉํ๊ณ JVM ๊ตฌ๋์ ์๋ ์ต์ ์ถ๊ฐํฉ๋๋ค.
-Dsun.java2d.cmm=sun.java2d.cmm.kcms.KcmsServiceProvider
์ํ๋ ํ์์ผ๋ก ์ถ๋ ฅ
๊ธฐ์กด ์ถ๋ ฅ์ text/csv ์ด๋ฉฐ Accept ํค๋์ ์ํ๋ ํฌ๋งท์ ์ค์ ํด์ ํธ์ถํ๋ฉด ๋ฉ๋๋ค.
XML
$ curl -T a.pdf -H "Accept: application/rdf+xml" localhost:9998/meta
์๋๋ json ํ์์ผ๋ก ๊ฒฐ๊ณผ๋ฌผ์ ์ ๋ฌ ๋ฐ์ต๋๋ค.
$ curl -T a.pdf -H "Accept: application/json" localhost:9998/meta
JSON ์ผ ๊ฒฝ์ฐ ๊ฐํ์ ์ ํด์ ๋ณด๊ธฐ๊ฐ ํ๋๋ jq ๋ก ํฌ๋งทํ ํ๋ฉดย ๊ฒฐ๊ณผ๋ฌผ์ด ๋ณด๊ธฐ ํธํด์ง๋๋ค.
$ curl -T a.pdf -H "Accept: application/json" localhost:9998/meta | jq .