#그래블 단가의 이미지에서 문자를 꺼내자는 이미지 처리 이야기
9764 단어 TwitterAPI리눅스
이 기사는?
모니터링 설정 방법
환경 정보
품목
정보
CentOS
CentOS Linux release 7.2.1511
PHP
PHP 5.5.31 (cli)
실제 게시
한 예이지만 게임 내 게시물은 이렇게
「#그래블 단가」의 해시 태그와 함께 화상 형식으로 투고된다.
htps : // 라고 해서 r. 코 m/히로키_l←/s타츠 s/760487763296661505
우선 이미지를 얻자.
TwitterAPI로 액세스하여 대상 해시태그를 포함한 트윗을 추출했다.
또한, TwitterAPI 활용에는 twitteroauth를 사용,
twitteroauth의 도입이나 토큰의 취득 방법에 대해서는 다른 기사를 참조로 한다.
이번에는 search API을 이용하고 있다.
get-search-hash.php#!/usr/bin/php
<?php
require_once("twitteroauth/twitteroauth.php");
$consumerKey = 'XXXXX';
$consumerSecret = 'XXXXX';
$accessToken = 'XXXXX';
$accessTokenSecret = 'XXXXX';
$twObj = new TwitterOAuth($consumerKey,$consumerSecret,$accessToken,$accessTokenSecret);
$query = array(
'q' => '#グラブル短歌 https:// -RT',
'count' => '100',
'include_entities' => 'true'
);
$req = $twObj->OAuthRequest('https://api.twitter.com/1.1/search/tweets.json','GET',$query);
$tweets = json_decode($req);
if (isset($tweets) && empty($tweets->errors)) {
foreach ($tweets->statuses as $val) {
echo date('Y-m-d H:i:s', strtotime($val->created_at)) . ' --> ';
echo $val->text . ' ==> ';
foreach ($val->entities->media as $media) {
echo $media->media_url;
}
print "\n";
}
} else {
echo 'つぶやきはありません。';
}
?>
포인트로서는 아래와 같은 점.
- 질의(q)에서는 리트윗을 제외하기 위해 -RT옵션을, 그리고 대상의 투고가 아닌 분실물이나 악질적인 유저의 투고 내용을 피하기 위해 '해시태그+URL'로 검색했다.
- 'include_entities' 쿼리가 true가 아니면 이미지 URL을 가져올 수 없으므로 주의.
- 이번 글러블 단가에 대해서는 게임 측으로부터의 투고로 위치 설정과 언어 설정을 실시하지 않는 것 같기 때문에, locale와 lan은 설정해서는 안 된다.
출력 결과는 "트윗 시간 (created_at)", "트윗 된 내용 (text)", "이미지 URL (media_url)"이었다.
$ ./get-search-hash.php
2016-08-30 16:06:49 --> #グラブル短歌 https://t.co/Fyq2CHcvdg ==> http://pbs.twimg.com/media/CrFuJO5UAAAkFbb.jpg
2016-08-30 16:06:46 --> #グラブル短歌 https://t.co/UmtZ9sgXtX ==> http://pbs.twimg.com/media/CrFuIeGVUAAd7m_.jpg
2016-08-30 16:06:46 --> #グラブル短歌 https://t.co/vuiOa540eW ==> http://pbs.twimg.com/media/CrFuIdtUsAA9Xcq.jpg
2016-08-30 16:06:45 --> #グラブル短歌 https://t.co/Pd8WNUuEga ==> http://pbs.twimg.com/media/CrFuIUgVIAAtCWa.jpg
2016-08-30 16:06:45 --> #グラブル短歌 https://t.co/ZKLuKw3OxF ==> http://pbs.twimg.com/media/CrFuIMgUsAAl7hG.jpg
2016-08-30 16:06:43 --> #グラブル短歌 https://t.co/e0o9vpadfm ==> http://pbs.twimg.com/media/CrFuHvwUIAAiRdP.jpg
2016-08-30 16:06:43 --> #グラブル短歌 https://t.co/5oBFVwfH6a ==> http://pbs.twimg.com/media/CrFuHtkVIAAk6b3.jpg
2016-08-30 16:06:41 --> #グラブル短歌 https://t.co/m3bNgsxSBV ==> http://pbs.twimg.com/media/CrFuHQyVYAEDjMb.jpg
2016-08-30 16:06:39 --> #グラブル短歌 https://t.co/wyDdFh9Oow ==> http://pbs.twimg.com/media/CrFuGo3UkAI18sg.jpg
2016-08-30 16:06:36 --> #グラブル短歌 https://t.co/0jmCBn287I ==> http://pbs.twimg.com/media/CrFuGDzVMAAS0jv.jpg
2016-08-30 16:06:34 --> #グラブル短歌 https://t.co/pAW7r5PPkh ==> http://pbs.twimg.com/media/CrFuFivVIAAXoKH.jpg
시간 데이터와 함께 취득할 수 있으므로, DB에 저장해 정기적으로 취득하면 보다 양질의 데이터 계측이 되지만, 여기에서는 실시하지 않는다.
마음을 부드럽게 wget하여 이미지를 얻기로 결정했다.
명령 실행$ php get-search-hash.php |wget `awk '{print $7}'`
이미지에서 문자를 추출합시다.
Linux에서 OCR(Optical Character Recognition, 광학 문자 인식)으로 해본다.
우선 도입
# yum install tesseract
# yum install tesseract-langpack-jpn
$ tesseract --version
tesseract 3.04.00
leptonica-1.72
libgif 4.1.6(?) : libjpeg 6b (libjpeg-turbo 1.2.90) : libpng 1.5.13 : libtiff 4.0.3 : zlib 1.2.7 : libwebp 0.3.0
사용법
첫 번째 인수: 이미지 파일 이름
제2 인수:출력 파일명 ※txt 파일명이 되므로 확장자는 불필요
-l 옵션으로 언어를 지정, 여기서는 일본어로 jpn
-psm 으로 모드 지정, 통상 가로 쓰기로서 읽지만 -psm 5 라고 하면 세로 쓰기로서 읽는다
$ tesseract imagename outputbase [-l lang] [-psm pagesegmode] [configfile...]
그래서 결과의 예
결과적으로 말하면, 단가라고도 할 수 없는 것뿐이었다.
샘플 1: 이것은 OK
↓
[鮒「
ふたりきりそつとだれかをかくすきみ
ぽ〈はしせんをかくしぐらぷる
」剛一
샘플 2: 일본어로 OK
↓
門丿 } 「
ほぇほぇほぇほぇほぇほぇ
ほぇほぇほぇほぇほぇほぇほぇほ
ぇほぇへぉへぉぇほぇへぉぇほぇへ
帖脚
샘플 3:아(찰)
↓
剛「
ぞいちゃんはごよういできませんでしたまろ
」剛一
결론
#!/usr/bin/php
<?php
require_once("twitteroauth/twitteroauth.php");
$consumerKey = 'XXXXX';
$consumerSecret = 'XXXXX';
$accessToken = 'XXXXX';
$accessTokenSecret = 'XXXXX';
$twObj = new TwitterOAuth($consumerKey,$consumerSecret,$accessToken,$accessTokenSecret);
$query = array(
'q' => '#グラブル短歌 https:// -RT',
'count' => '100',
'include_entities' => 'true'
);
$req = $twObj->OAuthRequest('https://api.twitter.com/1.1/search/tweets.json','GET',$query);
$tweets = json_decode($req);
if (isset($tweets) && empty($tweets->errors)) {
foreach ($tweets->statuses as $val) {
echo date('Y-m-d H:i:s', strtotime($val->created_at)) . ' --> ';
echo $val->text . ' ==> ';
foreach ($val->entities->media as $media) {
echo $media->media_url;
}
print "\n";
}
} else {
echo 'つぶやきはありません。';
}
?>
$ ./get-search-hash.php
2016-08-30 16:06:49 --> #グラブル短歌 https://t.co/Fyq2CHcvdg ==> http://pbs.twimg.com/media/CrFuJO5UAAAkFbb.jpg
2016-08-30 16:06:46 --> #グラブル短歌 https://t.co/UmtZ9sgXtX ==> http://pbs.twimg.com/media/CrFuIeGVUAAd7m_.jpg
2016-08-30 16:06:46 --> #グラブル短歌 https://t.co/vuiOa540eW ==> http://pbs.twimg.com/media/CrFuIdtUsAA9Xcq.jpg
2016-08-30 16:06:45 --> #グラブル短歌 https://t.co/Pd8WNUuEga ==> http://pbs.twimg.com/media/CrFuIUgVIAAtCWa.jpg
2016-08-30 16:06:45 --> #グラブル短歌 https://t.co/ZKLuKw3OxF ==> http://pbs.twimg.com/media/CrFuIMgUsAAl7hG.jpg
2016-08-30 16:06:43 --> #グラブル短歌 https://t.co/e0o9vpadfm ==> http://pbs.twimg.com/media/CrFuHvwUIAAiRdP.jpg
2016-08-30 16:06:43 --> #グラブル短歌 https://t.co/5oBFVwfH6a ==> http://pbs.twimg.com/media/CrFuHtkVIAAk6b3.jpg
2016-08-30 16:06:41 --> #グラブル短歌 https://t.co/m3bNgsxSBV ==> http://pbs.twimg.com/media/CrFuHQyVYAEDjMb.jpg
2016-08-30 16:06:39 --> #グラブル短歌 https://t.co/wyDdFh9Oow ==> http://pbs.twimg.com/media/CrFuGo3UkAI18sg.jpg
2016-08-30 16:06:36 --> #グラブル短歌 https://t.co/0jmCBn287I ==> http://pbs.twimg.com/media/CrFuGDzVMAAS0jv.jpg
2016-08-30 16:06:34 --> #グラブル短歌 https://t.co/pAW7r5PPkh ==> http://pbs.twimg.com/media/CrFuFivVIAAXoKH.jpg
$ php get-search-hash.php |wget `awk '{print $7}'`
# yum install tesseract
# yum install tesseract-langpack-jpn
$ tesseract --version
tesseract 3.04.00
leptonica-1.72
libgif 4.1.6(?) : libjpeg 6b (libjpeg-turbo 1.2.90) : libpng 1.5.13 : libtiff 4.0.3 : zlib 1.2.7 : libwebp 0.3.0
$ tesseract imagename outputbase [-l lang] [-psm pagesegmode] [configfile...]
[鮒「
ふたりきりそつとだれかをかくすきみ
ぽ〈はしせんをかくしぐらぷる
」剛一
門丿 } 「
ほぇほぇほぇほぇほぇほぇ
ほぇほぇほぇほぇほぇほぇほぇほ
ぇほぇへぉへぉぇほぇへぉぇほぇへ
帖脚
剛「
ぞいちゃんはごよういできませんでしたまろ
」剛一
이상
Reference
이 문제에 관하여(#그래블 단가의 이미지에서 문자를 꺼내자는 이미지 처리 이야기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Hiroki_lzh/items/b84c4d50090fa8e39e6b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)