掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 31995|回复: 45

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

  [复制链接]

该用户从未签到

发表于 2013-8-25 10:34:14 | 显示全部楼层 |阅读模式
本帖最后由 Oeasy 于 2017-9-19 15:42 编辑 . f, q3 G1 S$ n  G4 `2 W
. v  b" s: E" @; L; V0 w

" R# R3 }5 i- k. Y2 NFAQ
1 Z- f' l& ?7 H* R/ \0 c) D>>  未加密的 mdx 如何转为txt?, R) W; A4 _' N; ]9 D
工具①,GetDict.exe by yhssdl。下载地址:+ Q/ g7 e  s$ q) N" b. o2 D
http://pan.baidu.com/share/link? ... 67&uk=305151372
! H& `4 T- G9 e) F) l1 c/ Q( V0 u% i( w- I
>>
9 i" g% a4 p. q% T# U( e: S[实例][解压mdx/mdd再打包为mdx/mdd][乱][多图]  https://www.pdawiki.com/forum/fo ... hread&tid=13388
8 r8 T; r. Z( x8 \8 [* P+ H3 L- i9 d6 z
% _4 _( |: T( X8 Y7 C5 j4 |$ @
老马的原创空间 http://www.cnblogs.com/stronghorse/) s9 o+ I* u' K; f, g" z( u) i
' V+ q7 \3 c5 g4 o2 X7 m* X- c

  J' T% L# c1 [9 h& L- ibgl-> txt https://www.pdawiki.com/forum/fo ... &fromuid=147948
8 K1 V6 v5 o9 Q1 u2 E
, o  J# J9 p( W, i. H
7 x6 r1 X6 p* J
6 n; \" v+ {# t) {& M* w3 d, B& B( W7 C
8 f/ E+ l4 F) P. s
2 ?) a0 N) v/ U, v' _( Y0 \
整理中,欢迎补充: t) V' |% P( D. K; J# u
mdx制作非常简单,但是要获取源文件,或把词典做得很漂亮有的时候是需要下一番功夫的。
, s/ \) p# t8 `7 W6 N  \正则表达式Regular Expression, html, xml, div+css,
7 n- D# ~) d. A1 |  a编码,尤其是汉字编码的一些知识,神马UTF, GBK, unicode。。。{:10_300:}
3 R/ g6 ]- R- r9 {0 l" m程序设计语言:; H0 s  @8 S0 n' z
Python;C++;+ _7 ]: L. h% j& z. X+ I
Perl0 K. ~1 K; j8 i6 u  _
JavaScript : http://www.w3school.com.cn/js/jsref_decodeURIComponent.asp
0 h7 g8 W5 y+ l- YVBS/VBA
$ W/ c- L# G7 g' D/ g. G# jhttp://www31.ocn.ne.jp/~h_ishida/scripts.html
, n; u& y5 M- S- F) f; r数据库软件:
; c; k7 I  R% V  u1 fNavicat Premium: g% L) x$ X$ y) ]
SQLiteSpy,PowerBuilder
( i$ J5 H  |9 ?1 W9 ]( KSQLite Expert Professional$ C; t1 n2 H2 W9 ~0 j
软件:
' u% L2 S/ u, u4 P0 w: i7 UMDict,MdxBuilder: http://www.octopus-studio.com/download.cn.htm* f( C1 y; \; X+ N0 O

. ^9 X4 P6 l1 X  N6 ?2 S9 B. D8 I文本编辑器类:Notepad, Notepad++, EmEditor, UltraEdit, EditPlus,
; t/ p" b( C( L' g0 S7 j; _2 Q5 l5 ^Replace Pioneer http://zhidao.baidu.com/link?url ... KEcUNfmzOo7nLH8BSNq; U; j1 ^+ X) s4 R( F
Raptor 3 http://softfie.com/software/hacktool-raptor.html& Q: F" V- z" ?8 B2 F
awk 4 Windows :http://sourceforge.net/projects/ ... -1-bin.zip/download
) S* \. S0 Y+ \/ M
2 K& G3 K% K/ V$ o7 ?3 Q. c, CMicroft Office:Word, Excel, Access  K: O1 R1 P! V. x' A  P
Adobe: Adobe Director (某些光盘是用Macromedia软件做的,用这个可以提取语音),Adobe Acrobat Pro0 x8 d% q, I9 |! @+ e
OCR:ABBYY FineReader$ A; q9 _6 d% Y( [" a2 E
DWS: Tlex
, \& _7 e7 i; k0 n, ~7 ~浏览器:Firefox, Chrome7 z) @1 T  x# i" {0 U' k, X

2 W  k+ e  {8 d% Z解压缩软件
# v3 ]+ ]  U$ S" y $ M& q6 y& A) b

8 t3 S; e7 {$ w1 y" w8 Q* P; C离线下载类:
( X& V* Y8 v. T; S4 E* q5 hwget, Teleport Pro, OfflineExplorer1 \7 e: ?; `! F3 b
其他( d2 a1 e! N7 f
Fiddler 2, ! R- v  j4 Z0 h1 O+ b
SQLiteSpy
, j' [9 j) k5 w5 Q" {yhssdl的GetDict2.6
- |( q1 t$ b1 [3 J) lAudioTranscoder
" i/ w  P$ M9 e: i. a' S按键精灵! x) u& w1 A. P8 v1 I) g+ _0 l
Tvangeste / dictzip-win32. r1 Y) i7 C  c
https://github.com/Tvangeste/dictzip-win32/releases/- _. E- k; |- k2 }: K
$ V( O5 j9 ?3 E6 g, Y
dsl相关软件:
2 A4 ]; m, C8 Z' `DSLGD
2 f6 T4 d8 n* _8 x5 d; T+ R0 l5 x$ f* a' v4 a" u& {
有参考价值的技术(讨论)贴:
0 z8 ]/ |/ z. q- u" j0. superfan89( x) V/ Y# [0 a6 M1 w# E4 W
[英汉-汉英] 21世纪大英汉词典&新汉英大词典【11/8/1更新】: https://www.pdawiki.com/forum/thread-7022-1-1.html, 帖子附件有ydDumper源代码' E- W, a. u* L& @0 a5 M
https://github.com/superfan89/IDMSKconv IDMSKconv源码/ M- I5 T# _0 Y, t4 g
http://dicwizard.jp/jamming_ug.html! F- \, E0 C; |9 t9 j2 g
https://www.pdawiki.com/forum/fo ... ctionary&page=3 63楼
" U0 _* b9 p+ g4 P9 m( L9 v) e8 x, o, ]4 o( V% J' f* i; E
1. chigre
% d7 J: W4 ]+ l# i, c【直播完成】一个在线词典的离线MDX化制作[2012-11-29]:https://www.pdawiki.com/forum/thread-10260-1-1.html" G+ V) Q' V7 a; b+ i
各种格式词典数据转TXT文本的工具软件(.BGL .LSD .LD2 .MDX STARDICT) https://www.pdawiki.com/forum/thread-10267-1-1.html0 o4 @' H2 G# {6 B
[其他语种] Z意汉汉意词典转制效果: https://www.pdawiki.com/forum/thread-10796-1-1.html
# g; v9 G; s2 z9 f) w  a. s! `/ n2 i
2. Hugh
, ?$ ^, t8 w! D$ X【图文】手把手教你[转换]+[排版] MDX格式词库: https://www.pdawiki.com/forum/thread-10689-1-1.html8 }6 x) l+ g- O4 w7 I
, q1 I* N! h8 C2 Q) Y& t! R
3. ldlcau
9 A) U0 i$ W: n4 A  O: [mdict版制作方法和常用工具: https://www.pdawiki.com/forum/thread-899-1-1.html0 F% v' Q* R+ z# e% Q
8 p* r  v0 `( n3 W8 ?$ x
4. Oeasy
1 Q; K4 E3 \) d" h【2013.07.06】如何利用Microsoft Word排版制作.mdx? : https://www.pdawiki.com/forum/thread-10801-1-1.html. P1 p# L( ?- H$ J: M6 ^& E

- z' @) f* Z, F- E( C5. jjcizi1 b  C3 {. C9 Q  ^) l# B# e+ O
[BlueDict] 一种把Excel转换为MDX的方法: https://www.pdawiki.com/forum/thread-9600-1-1.html
* W% }" V' Z- s4 I+ x/ V# H7 K! |2 |! Z& Q
6. sunsmile23
- C0 W( Z2 \. E8 y- w汉英词典的汉字显示问题: https://www.pdawiki.com/forum/thread-10809-1-1.html
3 Z- @( g& H2 s9 Q6 Y; ivba如何正确地输出UTF-8编码文件: https://www.pdawiki.com/forum/thread-10832-1-1.html& q4 Z3 _( ~4 r2 U4 L# ]

1 U. V2 U: l: a- ~- x7. sjn015 `1 H; G/ _1 q! G" \' m/ h& ~
求助,能否将Collins COBUILD 高阶英汉词典做成MDX?:https://www.pdawiki.com/forum/thread-6626-1-1.html9 M4 j; j$ }% `4 Q/ W; X
9 g0 T5 D/ A: E( P: j- X
8. 惟吾无为( Q' y3 w% N- u* X4 c7 [+ z
linux下制作离线百度百科的思路(含成品): https://www.pdawiki.com/forum/thread-9256-1-1.html$ P8 u1 M! t$ P# Z& |
$ e8 Q* x8 t2 ]* t* d
9. freegut+ b: A; I2 i6 ]* a  V
分享Lingvo到MDict的转换经验: https://www.pdawiki.com/forum/thread-5386-1-1.html
9 J; G6 H2 ?" {: Q* A$ b/ ?& j: Z( f' I1 D) x
8. zhu1234
7 R2 b" ?& C; u" B6 L* kMdx制作流程: https://www.pdawiki.com/forum/thread-9440-1-1.html* a) S8 O' T/ m2 Q- c% _

" b5 _4 e. t3 L5 U9. 发哥
: D! o' ]" T7 U6 N7 X[英-英] ◆Dictionary of American Slang and Colloquial Expressions【20081222】:https://www.pdawiki.com/forum/fo ... ighlight=pdf%2Bword 8楼有pdf到html的经验。8 A( E- E7 g8 V1 @( a: ]0 q

, h  u" B& {# {! F10. FHYVUCBRUG
, [  {* a$ R1 y; U, C& K5 V% ^https://www.pdawiki.com/forum/thread-10617-9-1.html 第219、220、222、224楼。网盘有ConvToSpx.py8 R1 Q/ O/ F2 t6 d7 w4 S" i. {) g, L/ K
, J" U9 b+ @: R0 L# O4 W
11. 手把手教你转换辞典
( k! y0 S9 r; P! Q/ V( A3 _http://bbs.emagic.org.cn/forum.p ... ntable&tid=5278  k2 r/ G5 i3 H; \$ g$ d1 r1 s
http://www31.ocn.ne.jp/~h_ishida/scripts.html! N1 g0 ^9 S' u3 ?, u$ _0 K+ M$ U
' h; A2 `4 C( y2 V6 r1 n

( N0 v/ t; M0 T" z" R& D1 z--
+ d. ~& f+ t6 f$ z8 [2 uhttp://blog.yeshj.com/luodean/
$ q! L0 C7 |- l1 d3 L: k老马的原创空间:http://www.comicer.com/stronghorse/index.htm+ U% h$ ?0 [6 d. l! p+ e" K; y
---# X9 T6 c* a4 p$ I" r+ g
1.  Ultra Edit中如何删除包含特定内容的行?
( `4 A* s) F1 H7 X: r! h3 f3 t3 X
如某文件中有些行含有特定内容PTTAddress; s+ }6 u: g. @3 q
a. 使用替换功能,勾选正则表达式(Regular Expressions),替换内容为%*PTTAddress*^p,替换为为空;
% h6 Z7 \7 D' x, [& o4 wb. 删除空行,使用替换功能,替换内容为^r^n^r^n,替换为为^r^n;; O9 ^1 a* E! ?8 t8 [# K
a. 使用搜索功能,勾选列出所含内容的行(List Lines Containing Characters),搜索内容为PTTAddress;& Z3 _: \2 y/ U5 p
b. 在搜索结果中选择拷贝到粘贴板;" D  [: C! K; {% A2 r
c. 新建一空白文件,然后ctrl+v。
0 k+ d1 k8 O  m- z, K7 k3 Y

5 R; G0 w. f" b) J; U2. 使用wget如何登录后再下载0 G7 m# J2 O2 t7 Q
http://tilt.lib.tsinghua.edu.cn/node/2133 u5 J! t5 l* W1 \3 G& u
! o3 z& N1 u  n/ Z" V
3. 如何批量修改文件后缀名?
4 v' P8 f) h1 e$ O5 A) }http://zhidao.baidu.com/question/423790075.html
7 ^( N! Q. S4 V9 Y$ M4 k/ r% ~
! z6 c9 v5 W; ?/ R. ]  B4. 如何把多个文本文档合并成一个
2 J/ d' p6 E- s" [+ i7 _* Vhttp://zhidao.baidu.com/question/172524472.html
2 {: o) o( `1 u  D
; |2 H7 m$ K$ r/ F# Q3 d5. EPWING转txt
2 |9 O( Z6 a9 e6 ^http://coffeejp.com/bbs/thread-170502-1-1.html
8 a  L# Y- J' A  D8 l$ F# L$ C另:数千部日文小说和EBwin字典网盘分享 http://www.douban.com/group/topic/26642847/ 0 O; b5 J& a" T  H+ {' N7 I' t, o
http://www.coffeejp.com/bbs/forum-22-1.html
) C5 m9 F% Z9 ^# F# _9 I1 r+ p7 p' L# E7 m0 C9 l  a: o- L$ d9 [, k
6. bgl2StarDict' F5 m5 a  D5 l6 n( `
http://code.google.com/p/stardict-3/wiki/ConvertBabylon
! y, Q& k0 G% c6 e( t. m/ o0 \# ^5 Z4 |- t& n8 d8 e
7. Lingoes灵格斯电子词典LD2(LDF)文件单词提取器6 b4 R- R2 N4 x2 _" o- j
http://code.google.com/p/lingoes-extractor/
- s. B. b# F! t( i- Y: o6 x/ \-
0 m/ L* J! z) |& ~4 R8 g6 m' Ohttps://github.com/windylea/lingoes-converter
' r3 D9 T- v/ @$ I# j- @3 Q1 Z* b
3 Z7 Y$ q1 O1 [/ N! m8. lsd 2 dsl
2 H* w+ Y- [: |http://alabaxblog.info/2013/02/lsd-to-dsl-mass/' ^* T; P" Q/ {) b; W
http://www.windylea.com/blog/201 ... or-abbyy-lingvo-x5/  B  F+ @+ u% e1 ]- A
& ?8 e% ]/ y$ [: x( I
9. An Analysis of MDX/MDD File Format% E9 A  S3 T% O& d3 Y4 L
https://bitbucket.org/xwang/mdict-analysis7 h( ^) G# u) t, g% Z% V. {- i
http://m.newsmth.net/article/LinuxDev/56948?p=1
( v' b9 k; f& M7 F& Yhttp://mdict.codeplex.com/2 h1 M& Z  c6 U/ _2 t

& o0 n3 v3 _; D9 e6 K10.
, [$ F; k* `' a/ d- H; E; o8 Uhttp://hanzisearcher.cnblogs.com/
3 E3 U1 l1 U4 I
. W& a1 ]$ ?* ?: [( G* g2 z% r' W! y6 V11. RegEx Dotext 1.0% D' j5 k1 y( E( F
mdx制作必备:RegEx Dotext 1.0,可合并词条,提取信息等
, G' Y4 j6 C& z9 i- d% H4 ahttps://pdawiki.com/forum/thread-11430-1-1.html
* R. ^1 T0 a; U6 `% i
7 Y* f% X' ]3 t12. awk+wget实现批下载
! p/ q/ m3 N9 Q$ X* C) i. [http://blog.sina.com.cn/s/blog_4a1f59bf0100nifm.html
- d4 n8 V6 T: k1 F+ R* U5 q4 Z* ~& m; D# i- p
13. 【awk学习】gawk+wget+grep写的小爬虫
3 f: x8 }$ f$ h* ^; J4 X- nhttp://bbs.byr.cn/#!article/Linux/104263* w& l3 x% C$ |, c8 F/ u

5 |3 o) h, X( `  o  n" U$ A9 z14. wget批量下载文件后,如何重命名!8 r* S' b5 d( ]& O  ~. R3 K" W
http://www.linuxsir.org/bbs/thread321272.html: p( z' E9 V/ ^! ^+ s
  C% Q$ J3 V" b) x1 V' s
15. http://www.regexlab.com/
2 V! C( M4 o( Z( G! N' D! a1 O) ^4 u2 X+ @$ j! z
16. EBDump
4 B+ m# S" ^% I" ^http://www31.ocn.ne.jp/~h_ishida/EBDump.html$ f, `7 v& E7 m+ G; x
http://www31.ocn.ne.jp/~h_ishida/EBDump/EBDump.html
5 a' q, G5 p: s3 T" H4 I: W% h  r5 ~4 V/ a' C3 p. D1 Z9 t0 G9 n# \
17. Python抓取网页&批量下载文件方法初探(正则表达式+BeautifulSoup)
7 n8 C5 _" s1 C9 T* @& k+ Phttp://www.360doc.com/content/13/0929/20/11729272_318036381.shtml
6 T4 ?3 D! K* C5 `: y3 C' _
- T7 m8 n; \, l) l( [7 q18. [转]用python爬虫抓站的一些技巧总结" ~; o6 ?0 \! d% o& @$ [8 \* l. m
http://hi.baidu.com/txcbg/item/9b10b9562c275b9408be176a& ^: ~: ?; D2 Y3 N

. R* l. h7 o- T2 u6 s1 x19. Python爬虫入门教程, I! x( s6 L2 s1 G+ d0 x
http://blog.csdn.net/column/details/why-bug.html' {8 L, n6 V' r

  i9 h( W# w( t5 q2 _& j=========
/ M, H: q$ N: ], KEPWING相关:, [" O; M' k$ G) ?0 _& p) O/ {& G
http://hp.vector.co.jp/authors/VA021723/dessed/2 y. M) l) q7 B% h3 [0 N6 ^
% H/ `" e+ ^0 t- b* A3 ~

评分

2

查看全部评分

本帖被以下淘专辑推荐:

该用户从未签到

发表于 2014-6-2 11:26:50 | 显示全部楼层
本帖最后由 meigen 于 2014-10-7 01:45 编辑
0 L. i) j3 ^" y1 y$ l8 y
. B+ S" }1 E. ^% @提取Epwing词典图片的java代码
6 e5 T" R4 A9 oEpwing的图片分为两种, 一种是彩图(カラー図版)一种是单色图(モノクロ), 两种图片格式不同需要分别分析
# L% k# u# Q$ M/ J! a$ H3 N2 k首先是彩图( z4 P8 r6 e4 |+ j, J
格式说明:每张图片以“data”(64 61 74 61)为起点标志,data后面四位是该图片的数据大小,比如“6B E3 00 00”表示这个图片大小是58219字节;后面是数据部分,要提取的内容就是这个: h9 ^) }$ C' o
提取有两种情况,一种是先用ebDump导出txt格式,然后用txt来提取,一种是直接用HONMON文件提取,省去了中间步骤0 c  b( B  w# ^! r
先介绍用ebdump导出txt格式然后提取彩图2 L* E$ x, p, t  I
  1. final static char[] DIGITS = {2 b6 h. C" o' g, \+ R) i3 Q/ |+ y
  2.     '0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' ,9 I/ F; ]- E/ G( O9 I+ M- ~4 _
  3.     '8' , '9' , 'A' , 'B' , 'C' , 'D' , 'E' , 'F'* b! H+ P6 c; ^
  4. };
    & f/ Z1 E8 b% N4 b: n, O/ z
  5. public static String toHex(int i) {. F/ x" z; [$ j) ]2 m6 B9 e
  6.         char[] buf = {'0', '0', '0', '0', '0', '0', '0', '0'};* r, x: m  I, E- H: m
  7.         int charPos = 8;
    . n4 C* m/ d: X& w( X
  8.         int mask = 0xf;; Z9 B; G! j) r% Q$ p5 p
  9.         do {' K, Y* u" ?, g% d+ V+ B
  10.             buf[--charPos] = digits[i & mask];
    , H( K3 a$ c$ ~' S& A
  11.             i >>>= 4;
    * I* ~; F1 }% M7 c# Q: F* M9 R0 N
  12.         } while (i != 0);
    5 q& C8 ^, x# Z; t# \- W$ n7 M
  13.         if(charPos > 4) charPos = 4;. ]' m% W% J" ~' E' Z- i
  14.         return new String(buf, charPos, (8 - charPos));
    7 L0 [/ ]# ?) ^, [2 Q
  15. }
    4 H, p7 M  |8 i3 ^" J
  16. static void getColorPic(String f, String path) {: P5 i1 e5 N3 |, B3 L
  17.     try {
    + l8 B: `* ]+ P$ ~
  18.         BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(f), "Shift_JIS"));
    + @0 [, f# J0 c6 D( d8 D4 r7 i. F
  19.         OutputStream out = null;3 x) K$ W, b7 Z0 e4 _
  20.         String line = "";
    9 }. ]+ E/ C3 }
  21.         String block = "";: D4 j7 v1 ]! o( {
  22.         byte[] bs = new byte[2048];
    - C0 _: ^; h) y8 r1 N
  23.         int idx = 0;4 U% l/ v' E7 }- H' @  l! `. ], Q5 L
  24.         if (!path.endsWith("/")) path += "/";3 n: a+ a. N" C) \! e# N8 R' ^
  25.         File fl = new File(path);8 f# y2 [9 T% C$ E
  26.         if(!fl.exists()) fl.mkdirs();9 {0 }) ~4 p+ @3 }7 o/ \* d
  27.         while (((line = reader.readLine()) != null)) {! P3 s1 \1 g1 T4 q' C$ P6 o: d
  28.             if (line.startsWith("block")) {
    $ g( R1 L2 {& C  a$ J) K* L
  29.                 block = line.substring(6, line.indexOf("("));
    3 x# }- d0 _5 x
  30.                 System.out.println(block);
    ; j# y/ S1 [& }1 m: J- v
  31.                 idx = 0;( Z8 ]% Y8 p+ B9 G+ x& F: ?
  32.             }
      C! [# E9 O: x- K' q  n2 Z& J: |
  33.             if (line.startsWith("0")) {
    4 f' I/ C1 Z8 Q; X5 i
  34.                 for(int i=0; i<16; i++) {3 N# \& X- e$ R
  35.                     int a = CHARS.indexOf(line.charAt(5+3*i));
    . L0 e' @1 I2 T
  36.                     int b = CHARS.indexOf(line.charAt(6+3*i));
    + D$ C! F( V8 C9 i9 z+ J
  37.                     bs[idx++] = (byte) (a << 4 | b);) \) Y( }5 \* F6 {( N
  38.                 }9 F2 y) V3 K3 G" W, v
  39.             }
    % X3 D" [/ y1 s  h! H) O1 g3 j
  40.             int dts = -1;
    ( R6 G& @" T. w' p/ F, O
  41.             int ws = 0;
    , Q" r' ^7 ?# D9 R( c! a# q( N
  42.             if (idx == 2048) {
    7 `9 F: H; x  H8 \3 S2 e
  43.                 for (int i=0; i<2044; i++) {
    / C) r) R/ x& O3 O$ p" L
  44.                     if (bs[i]==0x64 && bs[i+1]==0x61 && bs[i+2]==0x74 && bs[i+3]==0x61) {
    ( ~3 J3 [. F' L6 b) x# |
  45.                         dts = i;- ]4 q3 }: i6 y) o
  46.                     }8 @" r/ A; G$ `9 G+ g+ p
  47.                 }4 H5 o8 k1 n( r
  48.                 if (dts != -1) {
    7 D! t9 N# ^- N+ w2 }
  49.                     if (out != null) {; L- z# a! _$ n, R! l+ Q% ]
  50.                         out.write(bs, 0, dts);
    ) B+ z. P3 z; D9 o0 n& d1 Y
  51.                         out.flush();/ [5 P% f; w; H0 L0 _
  52.                         out.close();0 Q! d7 ^$ {0 p4 t9 e2 ]- E  L) s7 z
  53.                     }
    , ~! S& v+ X5 {" ^% [+ V- O4 d6 a
  54.                     out = new BufferedOutputStream(new FileOutputStream(path+block+toHex(dts)+".bmp"));
    8 f' t: y) B# t$ m+ z
  55.                     if(dts > 2040) ws = dts-2040;
    + r/ X* Q- i: ?/ ?* m2 ^2 ~
  56.                     else out.write(bs, dts + 8, 2040 - dts);
    - h+ K( g+ r6 u
  57.                 } else if (out != null) out.write(bs, ws, 2048 - ws);) q. T& ?! r3 k7 Q5 R" ~
  58.                 idx = 0;
    - i5 Z* z( l4 G! n, k& A2 ~
  59.             }
    + G1 E  y* C% E
  60.         }
    / v) g& M! R8 W& c
  61.         reader.close();
    8 l8 f: C! [7 \3 i/ `
  62.         if (out != null) {8 @0 V; s$ z. g" [& g1 _
  63.             out.flush();" v, s( m( I9 I* R7 J) x2 v
  64.             out.close();) c9 @7 P0 E& t
  65.         }
    * h  y4 Z% U$ D9 Z2 Y+ ~3 t  }6 y
  66.     } catch (Exception e) {
    6 ~1 A9 H/ ?6 i. E/ h! ?
  67.         e.printStackTrace();' n0 s/ M& `- N3 l" q* ]2 q7 M
  68.     }
    5 ^; G6 e' r; k6 k
  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 编辑 - D9 F$ w$ m1 d& |& ~
# I9 g& c. \5 ^6 s, D! W# N3 [2 P
接14楼,单色图的提取稍微麻烦些,他里面只有数据部分而缺少文件头,这个是比较头疼的事情( Q3 n* m( f) [; `1 P: x& B8 e4 ?
先用ebdump提取出词典文本(本文),然后在里面获取单色图的代码(<1F44>开头,<1F64>结尾)- D# R$ h9 X4 q: V4 i: q
可以看到
: ^* Z# u# z4 x( O' r6 ]5 N" F<1F44><0001><w=200,h=256>xxx<1F64>[0001A4BD:0027]
! \; n" a+ T5 O& [这里的w=200,h=256表示图片的尺寸,这个参数后面会用到8 h. g, Z/ \; y: Z* A
然后<1F64>后面的这一段[0001A4BD:0027]就是单色图数据地址了
) f5 ?5 o1 ^: v先写个Demo 把所有地址都提取出来,顺便排一下序,去掉重复:& N4 y; u  |. B3 _' @5 Q
  1. static void getMonoTag(String f) {
    ; F0 x+ k# U: M. \$ H
  2.     try {
    ) }& a0 s) `/ M  G8 I2 h' v0 w
  3.         BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(f+".txt"), "Shift_JIS"));
    , ?& f/ M* ~1 ~# T
  4.         BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f+".mono.txt"), "UTF-8"));
    + m, d3 N. e, Q; V
  5.         String line;" l: W- c* w- c2 |
  6.         ArrayList<String> monos = new ArrayList<String>();# ^4 p5 h( |) ]7 |) p
  7.         while (((line = reader.readLine()) != null)) {+ N7 R3 v% ]( t6 n1 F* L5 h
  8.             while (line.contains("<1F64>")) {  E7 d9 t: K* u# e8 y
  9.                 line = line.substring(line.indexOf("<1F64>") + 6);
    ! F! W& i/ u: x7 ~
  10.                 monos.add(line.substring(0, 15));* j3 n9 Q$ r6 }+ Q( C! S
  11.             }0 D6 j, C( M, z& H
  12.         }
    4 g7 O# T6 K' D. I1 n
  13.         reader.close();
    " {. p3 t1 H$ P: N! ~
  14.         String[] monoa = new String[monos.size()];: \! j7 h/ X: _4 }
  15.         monos.toArray(monoa);
    9 I7 K# }; E* P8 g: c  `" z0 O
  16.         Arrays.sort(monoa);
    ) w9 G0 q6 B+ ~: @  s
  17.         String last = "";
    9 R% `/ v" e: ^# @: q/ N6 M
  18.         for (int i=0; i<monoa.length; i++) {
    6 f" Y6 j6 z# `4 t8 i
  19.             if (!monoa[i].equals(last))( h$ c) I* m1 c& P* @
  20.                 writer.write(monoa[i] + "\r\n");
    / ^+ \: ]- J+ r- B! a3 g1 N7 ]
  21.             last = monoa[i];
    ) t( T% \/ {  S9 |6 W, R' a1 X
  22.         }
    # ~; n0 x. [/ ^' ]
  23.         writer.close();1 e2 P4 A  |! X: s. U
  24.     } catch (Exception e) {
    4 W- p# l/ w: A0 c2 l8 @
  25.         e.printStackTrace();
    : |  p; Q, \- G$ k/ ~
  26.     }/ T& a8 X  n9 U/ I
  27. }
复制代码
1 T+ G) Q& V. y% ?5 L
得到了一个.mono.txt的文件0 r2 [% m, O1 I8 w- |' ]: Z
然后开始提取:
8 p. y$ i( C6 ?  d  k% O上面有提到w=200,h=256这两个参数,不过epwing好像弄反了,200是高,256是宽。 - -
$ i: H1 }$ ?* T+ J8 D提取过程中需要手动加上图像的文件头,可自行百度bmp文件格式
" z- D* }* L& d: f7 I) n8 v2 Q
  1. static final int WIDTH = 256;0 z! K2 l( P1 R. e8 b- m) z( C
  2. static final int HEIGHT = 200;
    8 G; h* }: }( G8 A0 ?
  3. static final int WIDTH2 = 32;
    ) U& B* a0 E! w% W9 r
  4. static final int SIZE = WIDTH2 * HEIGHT;$ N9 P- g. {( T2 v1 K9 b
  5. static final int FILE_LEN = SIZE + 62;5 T. v1 Q7 Q8 S2 p! z
  6. static byte[] filehead = {0x42, 0x4d,
    " e. E$ H$ _! A9 I* }1 T# s
  7.     (byte) (FILE_LEN & 0xff), (byte) ((FILE_LEN >> 8) & 0xff), (byte) ((FILE_LEN >> 16) & 0xff), (byte) ((FILE_LEN >> 24) & 0xff),
    . B5 P7 K8 `9 {0 |6 J! t+ M$ u
  8.     0, 0, 0, 0, 0x3e, 0, 0, 0};
    : w3 Y; W0 z2 o+ t5 w8 |& j
  9. static byte[] infohead = {0x28, 0, 0, 0,
    3 c) k+ h0 t1 t6 N( D) b
  10.     (byte) (WIDTH & 0xff), (byte) ((WIDTH >> 8) & 0xff), (byte) ((WIDTH >> 16) & 0xff), (byte) ((WIDTH >> 24) & 0xff),2 `  M3 Y* d$ k4 s2 Z! p' J# w
  11.     (byte) (HEIGHT & 0xff), (byte) ((HEIGHT >> 8) & 0xff), (byte) ((HEIGHT >> 16) & 0xff), (byte) ((HEIGHT >> 24) & 0xff),; V( k5 s! ^7 [4 }
  12.     1, 0, 1, 0, 0, 0, 0, 0,3 |! D: M9 I! k/ j  x: w
  13.     (byte) (SIZE & 0xff), (byte) ((SIZE >> 8) & 0xff), (byte) ((SIZE >> 16) & 0xff), (byte) ((SIZE >> 24) & 0xff),
    ) ?9 ^( V2 V+ K; ?; E3 M
  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};
    8 F  q! j5 u5 c. d; k8 I( }
  15. static void getMonoPic(String f, String m) {" u8 R( L- }5 c: i  ^2 I
  16.     try {7 B  u  B/ t! X: H; _; @) Z* m
  17.         BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(f+".txt"), "Shift_JIS"));
    $ A3 k7 q7 I! M
  18.         BufferedReader reader2 = new BufferedReader(new InputStreamReader(new FileInputStream(m+".txt"), "UTF-8"));
    , F: }6 A) V8 B9 s1 Q9 D
  19.         OutputStream out = null;2 Z2 ?) F6 h2 r' U1 Y! o
  20.         String line = "";% @! [) v+ g* ?; J
  21.         String line2 = reader2.readLine();
    : A; k( m0 w# s) Y+ R) g0 z4 Y1 A( d
  22.         int block = 0;
    6 b6 K: H- \3 T8 Z4 A) g1 A, `
  23.         int block2 = Integer.parseInt(line2.substring(1, 9), 16);
    7 m" O" g' j# M  p/ b( i; T) `# u
  24.         int offs = Integer.parseInt(line2.substring(10, 14), 16);  M( b# K6 n5 j$ c" z$ f& r- F
  25.         byte[] temp = new byte[2048];
    / D  `  o( ^4 |& s6 X, j
  26.         byte[] data = new byte[WIDTH2 * HEIGHT];
    . o" s" [( N" [
  27.         int[] idxs = new int[WIDTH2 * HEIGHT];
    6 d. x# R% k2 j5 \2 x4 e
  28.         for (int i=0; i<HEIGHT; i++) {' ?" B3 A5 g$ I3 x$ \0 |2 N
  29.             idxs[i * WIDTH2] = (HEIGHT - 1 - i) * WIDTH2;
    ; C0 a0 t4 w- w& X, a) A# s
  30.             for (int j=1; j<WIDTH2; j++)+ e' H9 }+ Q# B+ ~
  31.                 idxs[i * WIDTH2 + j] = idxs[i * WIDTH2 + j - 1] + 1;
    8 [9 @0 g* c5 ~$ A
  32.         }& ]1 x" s! _6 C$ m) u) l/ M" J9 Y/ o
  33.         int idx = 0;
    5 T, d+ ~8 h+ L: L
  34.         int didx = 0;
    / O* q' E$ y8 {* G: Q
  35.         while (((line = reader.readLine()) != null)) {6 w2 f* ]* O: d- d/ C0 N
  36.             if(line.startsWith("block")) {2 v8 g3 X$ N) Y* Q6 M/ |: g" k
  37.                 block = Integer.parseInt(line.substring(6, 11), 16);& p0 j: i! t, e
  38.                 idx = 0;6 _, S! k- \% N- X
  39.             }( t2 ]9 Z9 r7 A/ o: \- e+ J
  40.             if(line.startsWith("0")) {4 H0 ?" w" p* S$ p
  41.                 for(int i=0; i<16; i++) {) O7 k& ]% F6 f" ^
  42.                     int a = CHARS.indexOf(line.charAt(5+3*i));% z/ s' N- q8 A. W5 S3 R. s  C
  43.                     int b = CHARS.indexOf(line.charAt(6+3*i));
    # M/ l. Y+ |" i" t# F
  44.                     temp[idx++] = (byte) (a << 4 | b);2 F. i( b# b) E3 ^/ H9 `% e3 g
  45.                 }( g( y" R. [$ }
  46.             }5 C2 G' F; M+ K' G; _2 e0 k
  47.             if (idx == 2048) {2 ?- m/ b- I: E8 W1 T% `
  48.                 if(block < block2) continue;
    # x$ {: y. B& M) c( Q7 G* p
  49.                 int start = offs;6 X" d/ N" O+ B/ N
  50.                 if(didx != 0) start = 0;* a$ O) Y" a' W8 K
  51.                 for(int i=0; i<2048; i++) {
    0 |: x. Z* b( ~5 }7 Z. D
  52.                     if(i >= start)
    5 n$ G' W" o# T; S( ]9 B6 g
  53.                         data[idxs[didx++]] = temp[i];8 r. c/ \. j: R8 O" l
  54.                     if(didx == WIDTH2 * HEIGHT) {
    ' R$ ^' g# b: T4 J
  55.                         System.out.println(toHex(block2)+"."+toHex(offs));
    8 N) _6 a# k' S: N- p" \. C5 O. _+ l
  56.                         out = new BufferedOutputStream(new FileOutputStream("pic/"+toHex(block2)+toHex(offs)+".bmp"));
    ! _# @% p* H  c. \
  57.                         out.write(filehead);4 A, N7 c7 N1 S1 d' z
  58.                         out.write(infohead);
    * t8 J. `$ S# F5 ~1 A" a% w! p  |6 A
  59.                         out.write(data);# U9 C5 ~% Y9 m
  60.                         out.flush();# H' L+ m) Q4 D
  61.                         out.close();
    " ^* j# ?5 Q2 V0 @6 n
  62.                         line2 = reader2.readLine();: B" Z7 L" ]' f3 Y7 t: {
  63.                         if(line2 == null || line2.equals("")) {
    & A8 x- G; ]) F" R, q) T$ J
  64.                             reader.close();
    ; ^+ H4 h7 {4 b2 L
  65.                             reader2.close();
    + P1 {) V; _& }/ \  Y
  66.                             return;  S+ T7 r' l+ q& D& j# s+ V- ^
  67.                         }# c; b; B$ y1 W3 e% x3 |
  68.                         block2 = Integer.parseInt(line2.substring(1, 9), 16);2 M, O/ V- m! c" |6 d
  69.                         offs = Integer.parseInt(line2.substring(10, 14), 16);
    " h! K, C" J( i9 ^
  70.                         didx = 0;
    7 n. B$ ]- h3 o) ?, h9 E$ k" S; J
  71.                     }
    ; e. x+ f# Y" U* f
  72.                 }
    1 ]4 K, `, G3 q4 Z! d1 j
  73.                 idx = 0;; k( h6 h% U  j/ R* E6 k- k" a
  74.             }
    8 r2 @+ I& S8 s4 G/ }
  75.         }, b# [' R% |; W( x. `( \; t/ n
  76.         reader.close();; r, ^1 e) l* I6 K7 _% t$ O0 l" `
  77.         reader2.close();
    4 q6 n* Y& }9 ^6 D8 g+ ?
  78.     } catch (Exception e) {
    + B; H- m. E- B! I3 @$ w( C
  79.         e.printStackTrace();
    9 \7 u5 @- y8 p5 x8 p- T
  80.     }7 a, }8 [1 D5 x7 w/ }
  81. }
复制代码
% x1 G/ ]& `. J$ K
待编辑...
0 g+ y. S* y* a4 j& y* W) e+ M2 p; d* L9 @
回15楼:
  H1 a8 Q% g9 i' `
能把代码用附件形式上传么?顺便使用说明用英文。
( O# h! w/ b+ g7 @$ Y
代码有一些要改动的地方, 我完善一下就传附件
) Q( w' E) Q) K6 j另外用英文说明这...{:11_336:} + E/ R5 |: \1 F& k
我先用中文注释一下, 然后再慢慢翻译

评分

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 | 显示全部楼层
    高手们都歇了,或者对词典不感兴趣。' y+ V  `# V* h" x# J- d
    其实目前新的词典资源,主要集中在iOS、Android应用上,一些数据dat啊,db啊,都有加密,要破解啊,技术含量很高噢。+ \6 y8 G) W, B  t8 s; W3 P; e
    -
    $ j" V2 T+ n# a8 N1 M/ J# {/ f一些扫描的词典,要做成pdf,基本就只有靠神人出手了。网络合作校对或录入?我从来不觉得这事儿靠谱,志同道合的、对同一语种同一词典感兴趣的人太少太少。慢慢等吧。{:5_214:} 8 q  C+ A7 Y6 t

    该用户从未签到

    发表于 2013-11-11 10:58:55 | 显示全部楼层
    一直想制作啊,太复杂了,文科生一枚,看得我头晕。
    3 _" ?# I; L; u% e! P) S其实我只是想制作一个自己个人的词典,因为自己从事英语教学,有些单词讲解有自己的方式,要是加进去,以后备课就方便了。
  • TA的每日心情
    难过
    2023-11-26 08:44
  • 签到天数: 49 天

    [LV.5]常住居民I

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

    该用户从未签到

    发表于 2014-2-18 10:51:18 来自手机 | 显示全部楼层
    这个很赞!) a- a& g1 y8 x0 ~0 V. L
    最近打算扒维基来着。

    该用户从未签到

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

    该用户从未签到

     楼主| 发表于 2014-6-2 14:18:15 | 显示全部楼层
    meigen 发表于 2014-6-2 11:26 % L- C4 u9 e; G
    提取Epwing词典图片的java代码7 C" l1 c$ p( Z3 m  w* ~$ p3 d
    Epwing的图片分为两种, 一种是彩图(カラー図版)一种是单色图(モノクロ), 两 ...
    : N$ j* c0 ~+ A" e* I  e8 q
    {:5_227:}
    3 M0 ^) x, `/ h2 i8 h' d! W
    : l* T" W8 D$ B6 o论坛用了防转载插件还是什么的,复制代码的时候后边会加上一堆乱码。
    ; e# s( [( _6 t5 ^- J" f能把代码用附件形式上传么?顺便使用说明用英文。
    ; N0 J* H: P3 g9 F, N辛苦辛苦~: ^7 ]* d& ]  S* `) Q0 ^" `

    该用户从未签到

     楼主| 发表于 2014-6-2 19:29:10 | 显示全部楼层
    本帖最后由 Oeasy 于 2014-6-2 19:31 编辑
    . x4 a: f0 V$ Y+ [( Q. Y8 w- K
    meigen 发表于 2014-6-2 17:03
    6 b; |7 a* r" [5 m# }- Y接14楼, 单色图的提取稍微麻烦些, 他里面只有数据部分而缺少文件头, 这个是比较头疼的事情3 w+ ?' p! R8 f) \: z1 ?/ i
    我们可以先到词 ...
    $ e: f/ Y# [0 y. R& l
    + V) e- Z7 A+ o$ U* V" w
    {:10_240:} + l) _* r5 C$ C9 Y6 F

    ! n1 u. l! v2 i9 W, y" T' g% r。。。。
    * O& s0 y0 I/ w' G: e3 N9 p; _2 d1 o其实GoldenDict支持EPWING了,尚稍有瑕疵,但已然近乎完美,不敢要求更多,感谢Abs62大神。
      X0 j" }7 [; Y& vhttp://goldendict.org/forum/viewtopic.php?f=4&t=2922
    4 m: w3 r  C. Uhttp://goldendict.org/forum/view ... =2091&start=300
    ; q5 T+ c1 _7 P+ \! ?1 p/ H不过能把EPWING转出文本 & 图片,制作为dsl、mdx等,进行个性化排版,这些啊,始终是让人愉悦和有成就感的事情。。。{:10_228:}
    : Q! X; M2 @1 h3 Y
    * Y7 m3 B7 [3 T5 F: H: u

    该用户从未签到

    发表于 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++之流甩开几条街了。
    & l5 _! S* P# ?, {

    该用户从未签到

    发表于 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& Q/ O' M6 B0 p; i% N/ i- m' z" Q
    接14楼,单色图的提取稍微麻烦些,他里面只有数据部分而缺少文件头,这个是比较头疼的事情8 e4 Q; O; V/ @2 e- e( ?
    先用ebdump提取 ...
    ) E8 T6 k2 c* d$ j6 I: T5 R
    好文,谢谢。

    该用户从未签到

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

    本版积分规则

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

    GMT+8, 2026-10-17 09:01 , Processed in 0.032206 second(s), 33 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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