采集猫眼票房数字字体font-face 处理方法


有朋友采集猫眼的票房数据,遇到数字是font-face自定义字体 还是加密的,要将.万,这个是十六进制的字体

转为数字的思路是:

  • 数字提取过滤,用单独的页面显示,
  • 将页面转化成图片,
  • 用ocr图片识别成数字,
  • 在一一对应去替换

html页面转图片

工具:phantomjs

地址:http://phantomjs.org/download.html

安装:

//ubuntu
sudo apt-get install phantomjs

//并安装其他扩展
sudo apt-get install build-essential g++ flex bison gperf ruby perl \
  libsqlite3-dev libfontconfig1-dev libicu-dev libfreetype6 libssl-dev \
  libpng-dev libjpeg-dev python libx11-dev libxext-dev

phantomjs用法

//1.js

var args = require('system').args;
var page = require('webpage').create();
var sourcePath;
var destinationPath;
var sizeX;
var canContinu = false;

if(args.length >= 4) {
    sourcePath  = args[1];
    destinationPath = args[2];
    sizeX = args[3];
    canContinu = true;
}

if(canContinu == true) {
    page.viewportSize = { width: sizeX, height: 1};
    page.open(sourcePath, function start(status) {
        page.render(destinationPath);
        phantom.exit();
    });
}
else {
    phantom.exit();
}

命令行

phantomjs 1.js demo1.html full.png 300

图片ocr识别

工具:tesseract-ocr

地址:https://github.com/tesseract-ocr/tesseract

安装:

//ubuntu
sudo apt-get install tesseract-ocr

tesseract-ocr用法

tesseract 12.png stdout -c 'tessedit_char_whitelist=0123456789'

php调用

php封装类:https://github.com/thiagoalessio/tesseract-ocr-for-php

require('./src/TesseractOCR.php');
echo (new TesseractOCR('./12.png'))
    ->lang('eng')
    ->whitelist(range(0, 9))
    ->psm(7)
    ->run();

返回数字后再批量替换


常常是最后一把钥匙打开了门