掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 27986|回复: 45

[索引] 词库制作中可能有用的软件、技术整理[201710919]

  [复制链接]

该用户从未签到

发表于 2013-8-25 10:34:14 | 显示全部楼层 |阅读模式
本帖最后由 Oeasy 于 2017-9-19 15:42 编辑 + m6 X8 m. ~8 o9 I" j+ ?# m: [

6 I, k% A" s0 P! J& p3 C/ a9 O! V7 `+ R
FAQ
; e; B$ a8 }4 l% a2 B) K; N>>  未加密的 mdx 如何转为txt?
3 ^- l$ `* ~* x, K/ n- v工具①,GetDict.exe by yhssdl。下载地址:2 I0 u+ [: a  i* ]! f
http://pan.baidu.com/share/link? ... 67&uk=305151372
* u/ s; }3 Y6 K/ j% X( s2 `" ^& W( e8 |* \/ v& j
>>
+ p% j" a9 q' d  O- J# B6 D/ K" o/ {[实例][解压mdx/mdd再打包为mdx/mdd][乱][多图]  https://www.pdawiki.com/forum/fo ... hread&tid=13388
; @$ I6 _/ u& [' \& B# U2 z7 p2 L  q4 g# ?
3 Z+ a8 R9 z6 G8 D6 _
老马的原创空间 http://www.cnblogs.com/stronghorse/9 Y. N3 w) X5 B( t# Q
6 A  U7 g8 `, d3 K9 D3 W
5 w% O& f/ v* X
bgl-> txt https://www.pdawiki.com/forum/fo ... &fromuid=147948) B+ G6 m" G$ q& l- }

+ G" _8 U0 H+ v, D$ l8 s
  W( A) |2 |* W: R* z2 J# K. P
( |& X# s3 A2 \; L; k* T/ Q, E" S7 W5 U

9 [' w4 C0 E0 j  ]$ p1 P
$ t" A( B' F5 U: A& I% `6 y: s整理中,欢迎补充
# @& r' x' O; ], vmdx制作非常简单,但是要获取源文件,或把词典做得很漂亮有的时候是需要下一番功夫的。& n, e' ~0 O! T! L9 q! l1 ~% I
正则表达式Regular Expression, html, xml, div+css,
3 Y% ?/ h( ~  o6 }" s# j* B编码,尤其是汉字编码的一些知识,神马UTF, GBK, unicode。。。{:10_300:} 8 L$ {1 H$ t' _6 [. z4 d2 @
程序设计语言:
: C, |9 n" B, n1 WPython;C++;
+ {0 F4 I& {. u7 X; Y) T0 HPerl% a3 z2 L2 G4 K5 e
JavaScript : http://www.w3school.com.cn/js/jsref_decodeURIComponent.asp! ^; c' M" `& e3 q
VBS/VBA
  E* X6 N  ~. s( x8 ]1 xhttp://www31.ocn.ne.jp/~h_ishida/scripts.html
' j8 b, s: O8 U+ B0 N! x数据库软件:3 U, b8 y7 P* m3 A; X6 w% z+ X
Navicat Premium
+ \2 \  v! R% }1 G. I, U; DSQLiteSpy,PowerBuilder* ~2 k: Q2 ~* J5 Z+ k) y
SQLite Expert Professional, `; E6 ~% p6 C
软件:* e3 h- t" F2 B2 @& K+ C- ]
MDict,MdxBuilder: http://www.octopus-studio.com/download.cn.htm
7 `3 P) \% d/ N* Q* B% x$ b3 @$ U( A5 b: P" x2 |/ {3 L3 D
文本编辑器类:Notepad, Notepad++, EmEditor, UltraEdit, EditPlus,
1 x* H$ V8 u5 ^0 y0 t( iReplace Pioneer http://zhidao.baidu.com/link?url ... KEcUNfmzOo7nLH8BSNq
8 Z0 C8 X3 P! W7 s) d& y0 ?Raptor 3 http://softfie.com/software/hacktool-raptor.html. M8 \& G& l$ |; f7 m
awk 4 Windows :http://sourceforge.net/projects/ ... -1-bin.zip/download$ y; M8 S1 d2 Y; P! g

5 Y- Y5 s2 ?1 r& ?$ JMicroft Office:Word, Excel, Access
* D1 \% A0 V# \- \1 ?Adobe: Adobe Director (某些光盘是用Macromedia软件做的,用这个可以提取语音),Adobe Acrobat Pro
7 Q2 [, v+ x/ ~& hOCR:ABBYY FineReader
: t' u9 Z; Y6 j' R4 wDWS: Tlex
9 G& Q4 `  p! c4 M浏览器:Firefox, Chrome# A$ `, c2 I( q  E, V9 H, F

  ^: i- Y* C7 O- }* Q) |7 Z9 e/ p解压缩软件! s  v: m, k9 ], P. j
& J* H9 X" W7 c$ v& G5 W* U
$ b  E6 j& [) a/ j3 @0 b) v8 ?
离线下载类:0 C/ s' a$ Z' x# D+ @0 o# D( W3 |
wget, Teleport Pro, OfflineExplorer. L$ U0 p$ ?4 P' [+ ^
其他0 V. R5 ]- P3 Y" E4 E& K
Fiddler 2,
5 P! V% _! u7 }4 N2 p: fSQLiteSpy
% f" T. |: M7 g/ l# }$ `- b# }yhssdl的GetDict2.6
+ ]4 \5 P" W+ g3 x) H% _, v2 a/ lAudioTranscoder
; q. Z2 n+ ]& |: y按键精灵' j# h$ e! |" _& a
Tvangeste / dictzip-win32
; f' S$ `2 j) Q7 G* G$ b) Yhttps://github.com/Tvangeste/dictzip-win32/releases/
! R+ c8 _! n+ L" c9 }# n% d
5 ~8 K. X! H7 P/ {: j+ Z' r, Fdsl相关软件:. |9 k1 \2 e& m$ @/ T
DSLGD
0 s4 O2 S- Y( U8 @
  B2 S5 W. K4 j7 c" @有参考价值的技术(讨论)贴:7 f* p. Q2 h- `/ ^$ F
0. superfan89
# r2 \! G" }; F5 c! Q[英汉-汉英] 21世纪大英汉词典&新汉英大词典【11/8/1更新】: https://www.pdawiki.com/forum/thread-7022-1-1.html, 帖子附件有ydDumper源代码
5 e9 X. [4 `& Z) b. W1 H  fhttps://github.com/superfan89/IDMSKconv IDMSKconv源码
" U' T% W  F: m+ U" ?# Hhttp://dicwizard.jp/jamming_ug.html: Z4 H7 Q6 J8 H5 A  d1 \
https://www.pdawiki.com/forum/fo ... ctionary&page=3 63楼
. L) h8 e0 i1 @8 P; ]( l7 J' O% W" i& N# Q
1. chigre
: l' |, |7 |1 X* ^6 m【直播完成】一个在线词典的离线MDX化制作[2012-11-29]:https://www.pdawiki.com/forum/thread-10260-1-1.html
2 q5 I) H+ N2 s5 B( q, {8 a各种格式词典数据转TXT文本的工具软件(.BGL .LSD .LD2 .MDX STARDICT) https://www.pdawiki.com/forum/thread-10267-1-1.html' Q% c6 k: w( I0 E- \
[其他语种] Z意汉汉意词典转制效果: https://www.pdawiki.com/forum/thread-10796-1-1.html$ R+ T  f( |! \- q$ ~4 Q- D* t6 W

  x; ?3 _$ J9 E; g' k2. Hugh
% X3 t0 i; u9 O  l0 b) x, {【图文】手把手教你[转换]+[排版] MDX格式词库: https://www.pdawiki.com/forum/thread-10689-1-1.html
" L! f, p) `2 M$ Z: a, ^) Z2 r+ p0 I, T: \4 z
3. ldlcau
% F0 u) t5 N4 ]% F7 @: y8 Dmdict版制作方法和常用工具: https://www.pdawiki.com/forum/thread-899-1-1.html
' x4 }' c4 g- }: r% P1 g8 D- K+ I$ g1 x/ x4 r# E6 w
4. Oeasy2 E! o  N; n- [5 B3 `6 @
【2013.07.06】如何利用Microsoft Word排版制作.mdx? : https://www.pdawiki.com/forum/thread-10801-1-1.html$ n) ?& g% `# Z/ n
' X6 o9 t7 H0 v  Y1 d; }/ Q
5. jjcizi; s; f: V: p  D* y8 d2 p, M
[BlueDict] 一种把Excel转换为MDX的方法: https://www.pdawiki.com/forum/thread-9600-1-1.html
# L0 n; J1 @. l' L6 u$ o* V; C
3 }4 J$ V3 z/ T- x; C5 l6. sunsmile239 r+ i/ i# S9 p/ D6 G
汉英词典的汉字显示问题: https://www.pdawiki.com/forum/thread-10809-1-1.html8 ]. o; `0 R8 K
vba如何正确地输出UTF-8编码文件: https://www.pdawiki.com/forum/thread-10832-1-1.html9 z/ p% \) `4 j! q
, g3 I# ?$ I* U  H6 o
7. sjn01
' [2 |- \% D2 d( T求助,能否将Collins COBUILD 高阶英汉词典做成MDX?:https://www.pdawiki.com/forum/thread-6626-1-1.html" I# l8 N# k+ N% z9 y

- e& u8 H4 N" `8. 惟吾无为
' B+ _2 ?- }- Nlinux下制作离线百度百科的思路(含成品): https://www.pdawiki.com/forum/thread-9256-1-1.html
- I9 V6 V' _9 n& S$ Y6 K4 P/ ?/ x! D  Z
9. freegut
# Y9 q) z1 v3 @5 ^, H分享Lingvo到MDict的转换经验: https://www.pdawiki.com/forum/thread-5386-1-1.html
' X2 ~  i( }7 o0 z& P' M% ~% B
8 F, o/ g. U; K$ n3 m* p, a' q8. zhu12340 u" m/ `$ O7 O. Y5 k; N6 P& W. v
Mdx制作流程: https://www.pdawiki.com/forum/thread-9440-1-1.html4 Y+ d* D' k# {& e

! u7 J  N4 z; m9. 发哥! X, n( D1 f+ K6 T5 K* N# e: J5 o
[英-英] ◆Dictionary of American Slang and Colloquial Expressions【20081222】:https://www.pdawiki.com/forum/fo ... ighlight=pdf%2Bword 8楼有pdf到html的经验。
+ F+ g8 O0 g4 e8 w9 K# v7 K3 ?7 x3 R$ i' d
10. FHYVUCBRUG   p5 S5 v, I% `* V) c& B
https://www.pdawiki.com/forum/thread-10617-9-1.html 第219、220、222、224楼。网盘有ConvToSpx.py
9 ?( k+ V' @7 E3 c9 V7 ^% x9 Z* s& M
11. 手把手教你转换辞典8 D! M; F9 W' V5 b
http://bbs.emagic.org.cn/forum.p ... ntable&tid=5278
+ l; K$ e7 a) G' I7 I" Vhttp://www31.ocn.ne.jp/~h_ishida/scripts.html  y" f1 _  a: \( C% a6 t

, i( ?' J) x2 ?, B+ y3 `4 h* T
& ~/ l; Z0 K. \( O4 M& N) o--
; b+ {6 C6 B7 \http://blog.yeshj.com/luodean/
; f# o' O0 `* u3 `! d8 V: ~$ s老马的原创空间:http://www.comicer.com/stronghorse/index.htm
/ P7 Z) h* R& b/ g0 O; D; v, K---
! B# @& C2 Z1 b7 l% i1.  Ultra Edit中如何删除包含特定内容的行?
8 A% Z) T# {& b+ I5 p
如某文件中有些行含有特定内容PTTAddress' Q6 }2 \  i; r) k! i" X. L4 f
a. 使用替换功能,勾选正则表达式(Regular Expressions),替换内容为%*PTTAddress*^p,替换为为空;# t7 m$ B- V6 u
b. 删除空行,使用替换功能,替换内容为^r^n^r^n,替换为为^r^n;3 x$ n9 k1 j- p* X4 H2 h# Z
a. 使用搜索功能,勾选列出所含内容的行(List Lines Containing Characters),搜索内容为PTTAddress;* U' \# _5 N. g* c( q  E
b. 在搜索结果中选择拷贝到粘贴板;* j+ s5 d, k9 _1 R: `; \8 w0 y
c. 新建一空白文件,然后ctrl+v。

, C8 y. P3 k' J  b# \* D  [
" n9 j6 o8 E: {5 h2. 使用wget如何登录后再下载, f( z& [0 ]" x5 p- u
http://tilt.lib.tsinghua.edu.cn/node/213
" R: @. V- m6 C: m
2 q, k  V* B6 ~& @' I3. 如何批量修改文件后缀名?! b! R. W0 K; N, j: ~
http://zhidao.baidu.com/question/423790075.html
& u& S0 E- s  W% ~  y) o
% i9 N! h- i0 g5 n, m( W4. 如何把多个文本文档合并成一个
4 w0 n1 f/ G3 lhttp://zhidao.baidu.com/question/172524472.html, m% O- `. a: F+ e4 @
8 q8 x  ^9 L2 ?, C$ R
5. EPWING转txt
. O7 [- W6 Q1 P8 q. Phttp://coffeejp.com/bbs/thread-170502-1-1.html
6 v5 W) R. q4 C6 D9 [另:数千部日文小说和EBwin字典网盘分享 http://www.douban.com/group/topic/26642847/ " ~, m% D+ P! J3 B$ ?  A
http://www.coffeejp.com/bbs/forum-22-1.html3 d" }% L* k; }
# _; T0 P5 {7 d$ l
6. bgl2StarDict" L1 Y! a2 i2 w+ Q/ s2 {+ s" Y
http://code.google.com/p/stardict-3/wiki/ConvertBabylon
5 b8 S7 Z# e1 ?9 y5 r5 S+ Y  F9 G8 E8 U: H) k: {& i
7. Lingoes灵格斯电子词典LD2(LDF)文件单词提取器1 m; u# K* ]0 n6 y2 N: E3 o2 C1 ~
http://code.google.com/p/lingoes-extractor/8 ~3 R0 q+ S/ F' r6 m
-
4 O0 t, C" _/ r; }% X% b, |6 g4 Fhttps://github.com/windylea/lingoes-converter8 ~5 [! O* h( @% C/ p

6 N- ~; T. b1 @  e8 ]8. lsd 2 dsl
" F! P8 R: ]+ X0 n0 \8 Mhttp://alabaxblog.info/2013/02/lsd-to-dsl-mass/: @0 t( J/ B! G/ u  r, ]
http://www.windylea.com/blog/201 ... or-abbyy-lingvo-x5/
( a, q  W# k3 V+ P
% p, z, @7 y& J- k" B0 H8 @1 k' r1 T9. An Analysis of MDX/MDD File Format
& l* D4 y+ Z! O5 P& ^7 ^6 b; jhttps://bitbucket.org/xwang/mdict-analysis
7 L9 a+ ?0 f- U8 t* F) `/ ahttp://m.newsmth.net/article/LinuxDev/56948?p=1
$ D! S4 B& c% u3 [. H% }! Ehttp://mdict.codeplex.com/
8 e4 a! m8 ]' A3 i
( ?! q: d# D! y10.
# w! l* [. ~. ]6 A+ Z% O! F8 I( ~/ ^http://hanzisearcher.cnblogs.com/, H( ]; ~$ O4 p; Q- ]  S. u4 E
& w/ q, V% J1 S1 {( I( M3 y5 Z) u- N
11. RegEx Dotext 1.02 P; ~3 u1 G; H+ o$ \
mdx制作必备:RegEx Dotext 1.0,可合并词条,提取信息等: R* I6 F" m+ W9 E" x# X
https://pdawiki.com/forum/thread-11430-1-1.html8 R+ N% M0 t% b" s

' m" y$ r) S9 v12. awk+wget实现批下载5 M# F: f1 C- O: C' C: N6 N* q) P
http://blog.sina.com.cn/s/blog_4a1f59bf0100nifm.html, o3 |2 A- U( A9 b
# [, t* D' ~/ o; @# T
13. 【awk学习】gawk+wget+grep写的小爬虫0 b5 R0 _4 }" F( l+ e2 H
http://bbs.byr.cn/#!article/Linux/104263  u* R) K5 X2 [0 z% k

9 G; P3 q$ |6 A6 r, k  W3 A' u14. wget批量下载文件后,如何重命名!
! R- T: b; ?. Q' w, Uhttp://www.linuxsir.org/bbs/thread321272.html1 @7 v+ L2 t( W# W' K- P
1 r  x* l* D: W
15. http://www.regexlab.com/7 t7 H5 |. a8 t  S" u, I) a
5 |+ ]- t. Z, h- F8 L$ _- k2 {$ h# {8 n5 U
16. EBDump
! X  n, F* [, B7 G1 shttp://www31.ocn.ne.jp/~h_ishida/EBDump.html$ \* y4 H3 N. u6 o- ^% P
http://www31.ocn.ne.jp/~h_ishida/EBDump/EBDump.html
% O9 S+ y! l  ^- }  z! y& @5 @8 L7 g$ E1 ]
17. Python抓取网页&批量下载文件方法初探(正则表达式+BeautifulSoup)8 S& O; p1 H2 `  V( r1 o! I7 o
http://www.360doc.com/content/13/0929/20/11729272_318036381.shtml1 y# v7 l* z: X- o: s) x

2 _. T2 t2 e6 V18. [转]用python爬虫抓站的一些技巧总结
5 O) X% N# x" l, S$ T6 ahttp://hi.baidu.com/txcbg/item/9b10b9562c275b9408be176a
3 k8 A$ m% R8 x
9 v, M' d- b; h$ [19. Python爬虫入门教程% _' e. O* {) P% y+ I1 D$ h
http://blog.csdn.net/column/details/why-bug.html
/ G1 _* p  r# @; P, I1 f; s1 C% D) I9 h
=========
1 a3 ^. K, @( [  P: s) p6 REPWING相关:
7 k9 |: m# d' [. S/ r8 w! uhttp://hp.vector.co.jp/authors/VA021723/dessed/
7 L/ d6 I" F! k" _
+ y/ o/ G% J" M2 `% B1 _* K

评分

2

查看全部评分

本帖被以下淘专辑推荐:

该用户从未签到

发表于 2014-6-2 11:26:50 | 显示全部楼层
本帖最后由 meigen 于 2014-10-7 01:45 编辑 ! q. k" u( p9 F% K

8 j5 V6 |# z# N+ Q3 B3 }! N' J提取Epwing词典图片的java代码
% T$ V# G8 ~9 V$ `4 OEpwing的图片分为两种, 一种是彩图(カラー図版)一种是单色图(モノクロ), 两种图片格式不同需要分别分析! s* L6 ~$ Y/ }" M0 ~/ L; S$ Z
首先是彩图
5 ?) P. N. R! V! k6 s格式说明:每张图片以“data”(64 61 74 61)为起点标志,data后面四位是该图片的数据大小,比如“6B E3 00 00”表示这个图片大小是58219字节;后面是数据部分,要提取的内容就是这个
+ N2 F, J5 D# k+ Q提取有两种情况,一种是先用ebDump导出txt格式,然后用txt来提取,一种是直接用HONMON文件提取,省去了中间步骤
0 E8 Y% e- d8 i- k9 X8 A# G4 j* I5 X先介绍用ebdump导出txt格式然后提取彩图
$ F, L6 Q" ]6 b5 j4 S' K: Z- \
  1. final static char[] DIGITS = {# m6 w7 C5 e) x( ?
  2.     '0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' ,4 s9 h: y- Y" l, E: p+ f" ?
  3.     '8' , '9' , 'A' , 'B' , 'C' , 'D' , 'E' , 'F'
    , I$ L+ E' W/ \) d2 I% W
  4. };
    # Y. N4 v( A0 Q( g1 J: E
  5. public static String toHex(int i) {) y$ w, Z' m  F; z) ]+ r5 \" ]
  6.         char[] buf = {'0', '0', '0', '0', '0', '0', '0', '0'};  n7 j: v* F3 `, W6 ]
  7.         int charPos = 8;+ d: }# R2 z( X( m8 B7 i
  8.         int mask = 0xf;
    : |. a6 q  f( D) Q7 X  ~/ \
  9.         do {9 H, b: j! f, S7 W, O
  10.             buf[--charPos] = digits[i & mask];
    0 \1 d: ^6 X* A& s7 t
  11.             i >>>= 4;5 J/ A7 K( x0 h2 X8 K- f
  12.         } while (i != 0);
      r6 n% [+ i( T# L' Y5 N* T0 @
  13.         if(charPos > 4) charPos = 4;8 d6 v% ^- F; Y; M$ k5 r) G
  14.         return new String(buf, charPos, (8 - charPos));- H2 h6 O0 B# d: ]+ A
  15. }* B6 q: t: J# P0 F5 L$ _$ q. U; ~
  16. static void getColorPic(String f, String path) {: o# e- J# e8 ]' j$ D
  17.     try {; [3 g" }- A; q
  18.         BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(f), "Shift_JIS"));
    ( B  M: K: R" D' t
  19.         OutputStream out = null;! g3 X( _- i+ G% A7 v# S/ q
  20.         String line = "";
    + _  @. h* `! r/ W
  21.         String block = "";
    4 w# D2 N0 Y9 Y1 A2 c& T
  22.         byte[] bs = new byte[2048];
    7 T; Y1 B7 V8 s: v+ `2 j
  23.         int idx = 0;
    9 d$ }4 y8 y2 R# i9 V7 j- x
  24.         if (!path.endsWith("/")) path += "/";
      O3 `( H% n* h# U
  25.         File fl = new File(path);% N! A. {- w! `, `4 E4 B
  26.         if(!fl.exists()) fl.mkdirs();1 ]" m. s& `& \5 y! b
  27.         while (((line = reader.readLine()) != null)) {1 ?) N) w* ?$ {7 }8 d
  28.             if (line.startsWith("block")) {2 S$ q! u. u4 d! @2 E
  29.                 block = line.substring(6, line.indexOf("("));+ s8 _8 b# S7 T# y
  30.                 System.out.println(block);
    # R/ l" ]1 V7 ^; I: a- y
  31.                 idx = 0;
    + v0 s9 O  h9 s& Q5 Z- O
  32.             }5 ?8 @- k# P2 F" C: O% A* n
  33.             if (line.startsWith("0")) {
    # w5 c+ w( L5 A6 d: @
  34.                 for(int i=0; i<16; i++) {9 v( J+ T5 x8 m& B. U7 Y
  35.                     int a = CHARS.indexOf(line.charAt(5+3*i));( L- D! |) K/ `
  36.                     int b = CHARS.indexOf(line.charAt(6+3*i));3 h+ b; \6 X& u/ r8 Z8 C
  37.                     bs[idx++] = (byte) (a << 4 | b);8 z, R+ w' c3 c1 N7 q7 U$ }
  38.                 }
    ) z; [6 c& }% F4 T. S; B1 O
  39.             }
    : L9 ]1 C# [0 A2 H
  40.             int dts = -1;( {2 V/ e0 y8 Z  D- m  \6 ^( h
  41.             int ws = 0;6 o) K7 s& h5 `9 W2 c. r$ M2 a1 w
  42.             if (idx == 2048) {
    0 u! {8 v- l  T; m' S  ~; f& E) V
  43.                 for (int i=0; i<2044; i++) {
    6 Z5 {3 I& C2 d; k
  44.                     if (bs[i]==0x64 && bs[i+1]==0x61 && bs[i+2]==0x74 && bs[i+3]==0x61) {: `( ?! K# g4 |0 E5 F# U8 v. b+ H5 z
  45.                         dts = i;# X* R" `) q' V* W
  46.                     }
    ! g+ p9 b1 p! w  ]
  47.                 }4 V$ Z5 t8 a: v( S" R, m
  48.                 if (dts != -1) {
    , ]! U' E- `' p
  49.                     if (out != null) {
    : S. V; K  f# |  v0 b3 R1 z. M
  50.                         out.write(bs, 0, dts);
    ' a; s4 n( o$ V3 a& y- ^
  51.                         out.flush();& h6 h3 Q3 K- j& b
  52.                         out.close();
    : R: _3 a( K: r
  53.                     }9 i* L4 ~+ k* ]) ~8 }  n' t
  54.                     out = new BufferedOutputStream(new FileOutputStream(path+block+toHex(dts)+".bmp"));
    % a' v7 K3 A, M4 s- g: n+ J
  55.                     if(dts > 2040) ws = dts-2040;
    * Q8 X) m& k# L6 S' d1 C
  56.                     else out.write(bs, dts + 8, 2040 - dts);
    1 N, Z! U$ L; p( e
  57.                 } else if (out != null) out.write(bs, ws, 2048 - ws);
    2 m2 c& ~& |0 h9 w- Z7 q
  58.                 idx = 0;
    & l/ ?2 u# ^% Z3 @
  59.             }
    9 d  I# U. e3 `. B* w( I
  60.         }6 A! u& S' j0 i* F0 O6 E
  61.         reader.close();
    4 H  A1 u) M  _$ n2 F
  62.         if (out != null) {
    & r5 M, t% i- o, B/ l0 K; g
  63.             out.flush();
      ?; h# _5 R' b# |, V+ G6 m# f- J
  64.             out.close();9 M) v6 l- l4 M- U* a1 V& ^/ x& P& A
  65.         }$ y6 [( n7 `9 h  {8 K
  66.     } catch (Exception e) {# p6 v1 k& }( U; k! R; I6 Z
  67.         e.printStackTrace();- a, I" i( B9 R) s0 |" C, p
  68.     }
    4 u$ E5 n$ @+ ?& c
  69. }
复制代码
getColorPic(String f, String path) 参数说明: f是图片导出的txt文件, path是保存图片的路径

点评

请问,还有 EPWING 转 MDX 的 工具 吗?  发表于 2018-9-6 14:32

评分

1

查看全部评分

该用户从未签到

发表于 2014-6-2 17:03:11 | 显示全部楼层
本帖最后由 meigen 于 2014-10-10 20:19 编辑
# I* n8 _5 m4 h  G  B7 f& g- }; f4 D0 Z2 N7 h
接14楼,单色图的提取稍微麻烦些,他里面只有数据部分而缺少文件头,这个是比较头疼的事情5 A: S7 E  h6 h* z+ u+ q
先用ebdump提取出词典文本(本文),然后在里面获取单色图的代码(<1F44>开头,<1F64>结尾)
  e4 }+ m4 \! ]4 f2 u# o3 p: ]) U( |3 I) r可以看到4 X# m* N: R# c* a! v2 ?* F
<1F44><0001><w=200,h=256>xxx<1F64>[0001A4BD:0027]  r2 D* E; t0 G$ x9 I6 |
这里的w=200,h=256表示图片的尺寸,这个参数后面会用到7 P  Q$ I  ?- E+ x" u+ R" a
然后<1F64>后面的这一段[0001A4BD:0027]就是单色图数据地址了
/ _% K" {; |5 I4 z先写个Demo 把所有地址都提取出来,顺便排一下序,去掉重复:( T% z4 x2 a$ v+ h# e. j! e
  1. static void getMonoTag(String f) {
    3 G& ^9 f& h5 I
  2.     try {
    / T3 ~% B1 M6 ^3 H3 }9 z! }" N
  3.         BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(f+".txt"), "Shift_JIS"));# t2 S. R) ~! d8 o" F& u
  4.         BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f+".mono.txt"), "UTF-8"));4 M' k+ f/ e% j& t8 E$ i0 [' s
  5.         String line;
    $ |- K+ ~$ O% w
  6.         ArrayList<String> monos = new ArrayList<String>();2 e" Z4 i2 m5 a9 L- y" n0 K
  7.         while (((line = reader.readLine()) != null)) {
    * _; a; t, N# N
  8.             while (line.contains("<1F64>")) {. |( I0 |( p0 X% h' Y
  9.                 line = line.substring(line.indexOf("<1F64>") + 6);  r4 R* G# \( p8 X, t& M7 e& V
  10.                 monos.add(line.substring(0, 15));! s& @; f- p% n0 S0 L( h
  11.             }; O& C3 u" z4 o: B5 e; K- P
  12.         }0 i& T* I! O; ]2 k* r
  13.         reader.close();
    ) `* ?" N- a: L& g: v9 g; L8 j8 O- r
  14.         String[] monoa = new String[monos.size()];* }" f5 {. ~, m! \2 _0 w
  15.         monos.toArray(monoa);9 t- C# z8 Q" l/ f* Q) {% Y0 U
  16.         Arrays.sort(monoa);9 j" b4 X2 d+ B* Q
  17.         String last = "";) l7 ~! J" `9 C. u
  18.         for (int i=0; i<monoa.length; i++) {
    1 _5 i& a; Z% o5 E6 }
  19.             if (!monoa[i].equals(last))# E# b4 r) Q6 o+ @$ q
  20.                 writer.write(monoa[i] + "\r\n");
    + c9 _  L5 ?" J; k- k8 t( T
  21.             last = monoa[i];% E# H7 C" H: k2 r  d2 i
  22.         }
    6 n- C- L  \: u8 ^/ H6 \
  23.         writer.close();
    2 Q6 A2 U0 H( a5 f1 Z
  24.     } catch (Exception e) {# V* `# A6 @0 X6 |5 D8 U) t
  25.         e.printStackTrace();
    ; I( _4 E: ~+ D) ]2 Z
  26.     }- w1 d' S/ k+ e' J
  27. }
复制代码

6 M. J/ }5 l/ o- k得到了一个.mono.txt的文件
3 |, Y3 e! E2 l: \# Q) {1 ^( k然后开始提取:% Z& {9 W+ B, [9 L: A
上面有提到w=200,h=256这两个参数,不过epwing好像弄反了,200是高,256是宽。 - -
1 S1 `. y9 T( z5 }9 Z, u9 U提取过程中需要手动加上图像的文件头,可自行百度bmp文件格式. P# h  D6 u- O- e9 J8 p
  1. static final int WIDTH = 256;
    + Q) Y$ ~$ |& Y- e( \+ j5 k5 j
  2. static final int HEIGHT = 200;& Z8 w4 p& ^5 U% X  V
  3. static final int WIDTH2 = 32;
    " I: ]: _3 b, [. U. `8 T2 U9 X: {
  4. static final int SIZE = WIDTH2 * HEIGHT;, d) C$ S" ~3 q$ p3 H6 r- U5 b% E
  5. static final int FILE_LEN = SIZE + 62;" U& _+ t. S6 _6 P/ H3 t
  6. static byte[] filehead = {0x42, 0x4d," i6 U. }( f" y' ^! a: _7 O: Y
  7.     (byte) (FILE_LEN & 0xff), (byte) ((FILE_LEN >> 8) & 0xff), (byte) ((FILE_LEN >> 16) & 0xff), (byte) ((FILE_LEN >> 24) & 0xff),; ]( |/ K9 i  Q# |$ }$ a) Y/ _
  8.     0, 0, 0, 0, 0x3e, 0, 0, 0};) Z. f0 ^* h% E; H0 K
  9. static byte[] infohead = {0x28, 0, 0, 0,% A/ T$ y' u/ ^+ W/ [
  10.     (byte) (WIDTH & 0xff), (byte) ((WIDTH >> 8) & 0xff), (byte) ((WIDTH >> 16) & 0xff), (byte) ((WIDTH >> 24) & 0xff),' a4 r% @7 U) @: M, A
  11.     (byte) (HEIGHT & 0xff), (byte) ((HEIGHT >> 8) & 0xff), (byte) ((HEIGHT >> 16) & 0xff), (byte) ((HEIGHT >> 24) & 0xff),
    8 G4 E) ~, \2 Z- P
  12.     1, 0, 1, 0, 0, 0, 0, 0,  T4 f& D- ]& [
  13.     (byte) (SIZE & 0xff), (byte) ((SIZE >> 8) & 0xff), (byte) ((SIZE >> 16) & 0xff), (byte) ((SIZE >> 24) & 0xff),; T/ e- K$ s: r
  14.     0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, 0};
    : l0 G6 J7 w- X) s: y6 b
  15. static void getMonoPic(String f, String m) {
    & J/ d' S$ O- p0 i3 ?1 T- M, X
  16.     try {
    ! k! T! h& `9 J9 B# ]( @
  17.         BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(f+".txt"), "Shift_JIS"));+ e2 L! {5 ]7 u5 o( q0 c
  18.         BufferedReader reader2 = new BufferedReader(new InputStreamReader(new FileInputStream(m+".txt"), "UTF-8"));+ K. ~+ \" ^( ]: o+ A& G4 ]* A  [
  19.         OutputStream out = null;' b8 S# c3 f4 Q8 F- `$ c4 S
  20.         String line = "";6 w. A% ]/ W8 e* o6 g( C5 U; s3 U
  21.         String line2 = reader2.readLine();
    5 E! @/ s4 i6 R& ^0 D5 ~
  22.         int block = 0;
    & T4 K+ R7 t/ c/ M* x  Q2 a
  23.         int block2 = Integer.parseInt(line2.substring(1, 9), 16);
    ) p/ n& `6 O4 S8 h5 b5 E
  24.         int offs = Integer.parseInt(line2.substring(10, 14), 16);7 n' c: W  c* z" ^. u2 u
  25.         byte[] temp = new byte[2048];5 m# Z" B( D# k9 A" O
  26.         byte[] data = new byte[WIDTH2 * HEIGHT];0 A$ _% Y) u6 o
  27.         int[] idxs = new int[WIDTH2 * HEIGHT];
    " {' o' S8 g" p+ k% X. z
  28.         for (int i=0; i<HEIGHT; i++) {* A) Z* r3 s5 V3 J7 [
  29.             idxs[i * WIDTH2] = (HEIGHT - 1 - i) * WIDTH2;
    1 T  d$ u8 ~+ Z7 x/ F0 C* r
  30.             for (int j=1; j<WIDTH2; j++)
    9 |( H- V( ?, T3 |4 [9 b' Q
  31.                 idxs[i * WIDTH2 + j] = idxs[i * WIDTH2 + j - 1] + 1;! s' M  [4 c, X5 y5 v
  32.         }
    : ], r# G5 [' B; P: Y" O
  33.         int idx = 0;
    / h# X- h. j7 v  Y
  34.         int didx = 0;
    $ D" V+ Q# t7 M" O" P# J
  35.         while (((line = reader.readLine()) != null)) {  M3 s' h1 a2 n5 S; k& x! [* M' i
  36.             if(line.startsWith("block")) {3 ~/ u9 `- w) C' A8 S) ]
  37.                 block = Integer.parseInt(line.substring(6, 11), 16);
    9 z  v' n8 `' ?* i' x* B4 c
  38.                 idx = 0;
    $ @7 T0 l8 W2 y$ K" K8 ]0 F& u; n: j
  39.             }
    ; z7 r3 Z; d) U2 x4 t
  40.             if(line.startsWith("0")) {
    " P% F& m0 L4 H& _* O- L& D
  41.                 for(int i=0; i<16; i++) {
      Y( j7 E* K* U9 ^5 W3 u( C- b, o
  42.                     int a = CHARS.indexOf(line.charAt(5+3*i));
    ) D' j! u5 s0 J3 R+ u
  43.                     int b = CHARS.indexOf(line.charAt(6+3*i));, _7 m  o9 j2 Z& w( G, y6 l" R
  44.                     temp[idx++] = (byte) (a << 4 | b);
    " _5 J+ }) f: n) Z
  45.                 }
    ; f/ |0 T% o' `0 p$ g% ^
  46.             }1 p, m4 M! R% n2 g
  47.             if (idx == 2048) {
    1 r& M8 S$ q( G& V: B
  48.                 if(block < block2) continue;" X% B" v+ F1 n$ j8 t
  49.                 int start = offs;
      D" j; O) k( U) S1 n1 r  M" u. k
  50.                 if(didx != 0) start = 0;1 p" P" R! v4 T6 B
  51.                 for(int i=0; i<2048; i++) {
    % M, C2 P0 Z& w. V' V/ c' q. n8 S
  52.                     if(i >= start)
    : j5 H# S* Y* o2 x2 G  E
  53.                         data[idxs[didx++]] = temp[i];2 y$ S) j* g- b
  54.                     if(didx == WIDTH2 * HEIGHT) {
    6 R- z5 P# m* k1 [; q
  55.                         System.out.println(toHex(block2)+"."+toHex(offs));
    , r# e3 B& N! b% ?0 o0 b
  56.                         out = new BufferedOutputStream(new FileOutputStream("pic/"+toHex(block2)+toHex(offs)+".bmp"));
    : D* M% E7 S" `  b: o6 X
  57.                         out.write(filehead);6 r+ W/ }. O1 N* C; q, k2 @
  58.                         out.write(infohead);3 d3 s7 |! Y( n! G, J
  59.                         out.write(data);& F" I- U6 D! V
  60.                         out.flush();
    $ ?: X! u% ]" M& A- G# R* L# f
  61.                         out.close();
    / x" e: Z$ Z* ]
  62.                         line2 = reader2.readLine();
      ^! s, B5 w3 J. r9 Q3 s
  63.                         if(line2 == null || line2.equals("")) {4 A- I& H- R) Q+ v9 }
  64.                             reader.close();
    # C0 w: E% h" I- N& c7 L
  65.                             reader2.close();
    & S7 [0 G2 V) w( j3 `+ G0 R' p
  66.                             return;7 H7 Y( C$ I$ }- X; {0 r
  67.                         }
    9 X% x/ s, S: E4 g. I
  68.                         block2 = Integer.parseInt(line2.substring(1, 9), 16);
    - Z6 b$ ^. m3 Y' L! {1 j
  69.                         offs = Integer.parseInt(line2.substring(10, 14), 16);& y9 V8 F( j! i% [
  70.                         didx = 0;
    ! A( S- ^  A2 v, e+ Q; S
  71.                     }
    3 z3 |6 F; t- P  m1 E; B5 M+ Q! a
  72.                 }
    9 n: Y7 X( y- Q% a4 h2 S
  73.                 idx = 0;
    + b' b, r" e  s0 n
  74.             }
    . [' Q( a5 I4 \3 _: j9 |3 w& g6 e
  75.         }' a  j: ]+ p$ ^  Z$ _6 D% B6 j
  76.         reader.close();" I5 {- F  A$ ?) H' w
  77.         reader2.close();
    ' _/ P7 u" n+ ^. d, s
  78.     } catch (Exception e) {
    & O3 c2 I* ^2 `% ?$ m
  79.         e.printStackTrace();5 ^' S$ ]1 D" t
  80.     }+ ~" U; L& ^- B
  81. }
复制代码
- X  {* I+ t5 ?3 q% Z
待编辑...
+ X0 ?& f9 y( `+ p& D2 t# v! ^. R- K
回15楼:% k6 N3 j, I& j! r
能把代码用附件形式上传么?顺便使用说明用英文。

( }. A1 Z1 W1 I9 s, [代码有一些要改动的地方, 我完善一下就传附件. Z7 K- a# K2 _; l
另外用英文说明这...{:11_336:} + k& g7 u) E' l* k( Y
我先用中文注释一下, 然后再慢慢翻译

评分

1

查看全部评分

  • TA的每日心情
    开心
    2019-8-11 07:55
  • 签到天数: 606 天

    [LV.9]以坛为家II

    发表于 2013-8-25 17:56:54 来自手机 | 显示全部楼层
    楼主辛苦了。

    该用户从未签到

    发表于 2013-8-28 11:29:54 | 显示全部楼层

    该用户从未签到

    发表于 2013-10-23 12:56:25 | 显示全部楼层
    这帖子太好了。现在上的课正好跟html,jsp,sql有关,可以有针对性地学一学了~~

    该用户从未签到

    发表于 2013-10-24 09:37:16 | 显示全部楼层
    辛苦了!
  • TA的每日心情
    开心
    2021-1-11 09:04
  • 签到天数: 83 天

    [LV.6]常住居民II

    发表于 2013-11-1 23:10:03 | 显示全部楼层
    对我们这些没有软件基础的可咋整?

    该用户从未签到

    发表于 2013-11-3 10:47:35 | 显示全部楼层
    不懂,只知道怎么使用,仅以回帖表示赞同
  • TA的每日心情
    擦汗
    2025-3-22 09:30
  • 签到天数: 21 天

    [LV.4]偶尔看看III

    发表于 2013-11-7 08:29:45 | 显示全部楼层
    楼主辛苦了,谢谢分享

    该用户从未签到

     楼主| 发表于 2013-11-8 00:02:28 | 显示全部楼层
    高手们都歇了,或者对词典不感兴趣。( [$ I# y9 _* `1 ^* E8 i
    其实目前新的词典资源,主要集中在iOS、Android应用上,一些数据dat啊,db啊,都有加密,要破解啊,技术含量很高噢。
    - x1 G  @3 T5 I) r9 U-
    % E/ o9 w. d* W( d; D一些扫描的词典,要做成pdf,基本就只有靠神人出手了。网络合作校对或录入?我从来不觉得这事儿靠谱,志同道合的、对同一语种同一词典感兴趣的人太少太少。慢慢等吧。{:5_214:} % B) |& \% O* U' W4 L! u1 S) D

    该用户从未签到

    发表于 2013-11-11 10:58:55 | 显示全部楼层
    一直想制作啊,太复杂了,文科生一枚,看得我头晕。
    . n( j* |+ @5 p- O5 q其实我只是想制作一个自己个人的词典,因为自己从事英语教学,有些单词讲解有自己的方式,要是加进去,以后备课就方便了。
  • TA的每日心情
    难过
    2023-11-26 08:44
  • 签到天数: 49 天

    [LV.5]常住居民I

    发表于 2014-1-21 18:03:13 | 显示全部楼层
    看看,学习!谢谢

    该用户从未签到

    发表于 2014-2-18 10:51:18 来自手机 | 显示全部楼层
    这个很赞!2 N3 `4 Y, ~$ t7 o7 l
    最近打算扒维基来着。

    该用户从未签到

    发表于 2014-6-1 17:32:34 | 显示全部楼层
    好贴收藏。

    该用户从未签到

     楼主| 发表于 2014-6-2 14:18:15 | 显示全部楼层
    meigen 发表于 2014-6-2 11:26 5 u& _6 M7 h  ]1 h4 {/ r
    提取Epwing词典图片的java代码
    : E0 r% A% Z) H1 ~- p% b: `$ q+ |Epwing的图片分为两种, 一种是彩图(カラー図版)一种是单色图(モノクロ), 两 ...

    & \" k+ l/ H; q% h" S  B{:5_227:} 7 C4 {  o& V- z/ h0 Z- M

    ! h. m# T% ?! P% z+ q论坛用了防转载插件还是什么的,复制代码的时候后边会加上一堆乱码。! j" V0 E" h0 T6 f6 P- T: @  l# K
    能把代码用附件形式上传么?顺便使用说明用英文。
    ) X7 ^; T) j9 B! N- Y8 H6 z; F辛苦辛苦~
    1 [! M! K4 M' S  H

    该用户从未签到

     楼主| 发表于 2014-6-2 19:29:10 | 显示全部楼层
    本帖最后由 Oeasy 于 2014-6-2 19:31 编辑
    1 |( P7 }, n7 `( ]* u6 Q( }0 c
    meigen 发表于 2014-6-2 17:03 + |6 n1 K% N0 A9 `. ]
    接14楼, 单色图的提取稍微麻烦些, 他里面只有数据部分而缺少文件头, 这个是比较头疼的事情+ e$ U  o5 k* r3 ^. {3 ^2 b1 K
    我们可以先到词 ...

    5 q* m) W' c1 Z! U# e5 ~$ c, R' E* S- }0 n2 O# A& G0 D
    {:10_240:}
    , {9 E6 Z) E1 ]2 U7 g/ L, L. h4 b- k& ?
    。。。。5 D; I( H7 d% w- P
    其实GoldenDict支持EPWING了,尚稍有瑕疵,但已然近乎完美,不敢要求更多,感谢Abs62大神。5 J  V! w) E: e
    http://goldendict.org/forum/viewtopic.php?f=4&t=2922
    ! ?5 w! K2 G/ V) f2 D0 nhttp://goldendict.org/forum/view ... =2091&start=300
    " p: P( J- k$ M不过能把EPWING转出文本 & 图片,制作为dsl、mdx等,进行个性化排版,这些啊,始终是让人愉悦和有成就感的事情。。。{:10_228:}
    9 ?# F/ m1 A+ F, p: u5 y0 x: T" o. W( c9 y

    该用户从未签到

    发表于 2014-6-8 18:42:15 | 显示全部楼层
    这个帖子太棒了!必须好好学习一下啊。
  • TA的每日心情
    奋斗
    2018-12-10 10:05
  • 签到天数: 19 天

    [LV.4]偶尔看看III

    发表于 2014-6-23 15:54:42 | 显示全部楼层
    几位大神都离开啊,只求不定期更新词库
  • TA的每日心情
    开心
    2021-5-6 12:15
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-7-31 20:23:48 | 显示全部楼层
    。。。长期学习阵地

    该用户从未签到

    发表于 2014-8-21 08:12:58 | 显示全部楼层
    文本编辑器:Editpad无论是对正则的支持还是替换的速度已经把EmEditor、Notepad++之流甩开几条街了。% K) c+ h0 k' M

    该用户从未签到

    发表于 2015-1-2 00:39:31 | 显示全部楼层
    其实几个程序员常用的文本编辑器功能都蛮强大的,ue功能最多,复杂,emediter不错,对中日韩字体支持最好
  • TA的每日心情
    开心
    2019-5-18 14:33
  • 签到天数: 12 天

    [LV.3]偶尔看看II

    发表于 2015-10-18 00:11:23 来自手机 | 显示全部楼层
    meigen 发表于 2014-6-2 17:03
    1 z' f! I$ D8 B8 M6 ?接14楼,单色图的提取稍微麻烦些,他里面只有数据部分而缺少文件头,这个是比较头疼的事情0 v$ x6 Y, U- j' d% Y% p/ b: J
    先用ebdump提取 ...
    * [. M/ U( i" z: f6 y! s  [- J5 k
    好文,谢谢。

    该用户从未签到

    发表于 2016-1-30 21:11:09 | 显示全部楼层
    不懂,仅以回帖表示赞同
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

    小黑屋|手机版|Archiver|PDAWIKI |网站地图

    GMT+8, 2025-4-27 05:31 , Processed in 0.031871 second(s), 33 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表