PDFファイルをOCR使ってみたので共有します
OCR(Optical Character Recognition/Reader、オーシーアール、光学的文字認識)とは、手書きや印刷された文字を、イメージスキャナやデジタルカメラによって読みとり、コンピュータが利用できるデジタルの文字コードに変換する技術
https://ja.wikipedia.org/wiki/光学文字認識
他にも探したら無限にあるかと思います。
APIで文字データのみ返ってくるのが一番いいんでしょうけど、コントロールFで検索しても十分業務効率は上がるはずなので試してます。
色々使ってみました
この文字は正しく認識できるけどこれはできないみたいなのある。今回は文字認識の精度に加えて以下のようなものも重視します。
あと伺ったらpython自作もできるそうですが、精度azure,gcpに勝てなさそうだそうです。そんで流石にだるいなってなったんでやってみようとも思わずです。(会社の人)
文字の精度自体はadobeかgcpもおんなじくらいかと思いました。わずかにadobeの方がいいような気がしました。
そんなに多くないpdfファイルを扱うだけだったらコードとか書かないでadobeでやっちゃった方が早いなと思いました。
ということで画像いじる作戦をやってみる
ちなみにblock、paragraph、word、symbolっていう単位に分かれてます。このblockがずれてる。
https://cloud.google.com/vision/docs/fulltext-annotations?hl=ja
レシートを例に。(https://qiita.com/ayuma/items/bf5645894803769edc72)
エラー。(圧縮技術が使われたファイルは、FPDIのフリープランはサポートしてません。)
This PDF document probably uses a compression technique which is not supported by the free parser shipped with FPDI.
ググった感じだと、解決策を3つ見つけた
一番手っ取り早そうな QPDFに決めた
brew install qpdf
qpdf --force-version=1.4 template.pdf uncompressed.pdf
use setasign\Fpdi\PdfParser\CrossReference\CrossReferenceException;
use setasign\Fpdi\Tcpdf\Fpdi;
private function rotate($request)
{
$unixTime = time();
$fileName = $unixTime.self::PDF_EXTENSION;
$request->file->storeAs(self::ORIGINAL_FILE_DIR_NAME, $fileName);
//storageに保存
$pdf = new Fpdi();
try {
$pageNum = $pdf->setSourceFile($this->getOriginalFilePath($fileName));
} catch (CrossReferenceException $e) {
//エラーを吐いたら圧縮処理をかける
$this->uncompress($fileName);
$pageNum = $pdf->setSourceFile($this->getUncompressedFilePath($fileName));
}
for($i = 1; $i < $pageNum+1; $i++){
$importPage = $pdf->importPage($i);
$pdf->addPage();
$pdf->Rotate($request->get('angle'));
$pdf->useTemplate($importPage, 0, 0);
}
$pdf->Output($this->getRotatedFilePath($fileName),'F');
//storageに保存
}
private function uncompress($fileName)
{
exec('qpdf --force-version=1.4 '. $this->getOriginalFilePath($fileName) .' ' . $this->getUncompressedFilePath($fileName));
}
これ-4度↓
これ-6↓
これも-6↓
いじったコード
https://github.com/shlia34/ocr
拡大,縮小とか表の行で画像を分割したりするとうまいこといくかもっていう、、。また今度。